첨부하는 방법에는 이벤트를 IHTMLDocument2 링크 요소에 Delphi?
-
11-09-2019 - |
문제
나는 이 코드를 사용하여 모든 링크에서는 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 모든 시간의 이벤트가 발생합니다.
제휴하지 않습니다 StackOverflow