문제

나는 이 코드를 사용하여 모든 링크에서는 IHTMLDocument2:

procedure DoDocumentComplete(const pDisp: IDispatch; var URL: OleVariant);
var
  Document:IHTMLDocument2;
  Body:IHTMLElement;
  Links:IHTMLElementCollection;
  i:integer;
  tmp:IHTMLElement;
begin
  try
  Document := (pDisp as  IWebbrowser2).Document AS IHTMLDocument2;
  Body := Document.body;
  Links := Document.links;
  for i := 0 to (Links.length-1) do
    begin
      tmp := (Links.item(i, 0) as IHTMLElement);
      //tmp.onclick := HOW SHOULD I ADD THE CALLBACK HERE?
      //ShowMessage(tmp.innerText);
    end;
  except
    on E : Exception do
      ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
  end;
end;

어떻게 연결하는 기능/하는 절차.onclick 하는 간단한 작업 표시 경고와 함께 닻을 텍스트 링크를 클릭할 경우?

도움이 되었습니까?

해결책

한 가지 방법 http://groups.google.com/group/borland.public.delphi.oleautomation/msg/a57d99e0e52c78ce)

당신은 설정할 것입니다

tmp.onclick := TEventObject.Create(callbackProcedure) as IDispatch;

다른 팁

내가 권하고 싶지 않을 사용하여 onXXX-기 처리기(같은 onClick)으로 직접 이를 대체하 previouly 첨부 처리기입니다.이제/변경을 파괴하는 동작이 있습니다.으로 작업하는 경우 웹 페이지에 없는 당신의 통제하에 당신은 더 나은 사용 attachEvent:

(tmp as IHTMLElement2).attachEvent('onclick', callbackProcedureDisp);

하는 것을 잊지 마세를 분리과 detachEvent:

(tmp as IHTMLElement2).detachEvent('onclick', callbackProcedureDisp);

주의:그것은 가능한 연결 같은 처리기입니다.이 경우에는 핸들러도 여러 번 호출.

는 경우에만 관심이 있 onclick 할 수 있습니다 그냥을 하나 추가하기 위해 루트 요소가 있지 않을 통해 여행하는 모든 요소입니다. MSDN 국 이벤트 거품,그래서 당신 연결 하나의 이벤트 처리기 문서 요소를 확인 srcElement 회원의 IHTMLEventObj 모든 시간의 이벤트가 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top