Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi oncontextmenu False setzen (https://www.delphipraxis.net/130783-oncontextmenu-false-setzen.html)

API 13. Mär 2009 05:33


oncontextmenu False setzen
 
Guten Morgen,

In ein IHTMLDocument2 soll ein Code hinzugefügt werden und zwar dieser

Code:
<body oncontextmenu="return false">
Geht das mit insertAdjacentHTML? Und wie?

Edit:

Habe testweise den Webbrowser genommen. So geht es nicht (Kontextmenü wird noch angezeigt)
Delphi-Quellcode:
  Doc := Webbrowser1.Document as IHTMLDocument2; // Doc: IHTMLDocument2;
  Doc.Body.setAttribute('oncontextmenu','return false',0);

API 14. Mär 2009 04:51

Re: oncontextmenu False setzen
 
# PUSH #

API 15. Mär 2009 08:48

Re: oncontextmenu False setzen
 
Also nochmals: Der body tag eines geladenen HTML dokuments sieht so aus:

Code:
<body>
nun soll er so manipuliert werden, dass er so aussieht:

Code:
<body oncontextmenu="return false">
Auf das Dokument soll via IHTMLDocument2 zugegriffen werden.

Code:
Doc := Webbrowser1.Document as IHTMLDocument2; // Doc: IHTMLDocument2;
  Doc.Body.setAttribute('oncontextmenu','return false',0);
Geht das überhaupt mit setAttribute?

toms 15. Mär 2009 09:37

Re: oncontextmenu False setzen
 
Hallo,

Mit der THtmlListener Komponente von bsalsa.com geht das ganz einfach.
Die Komponente funktioniert auch mit TWebbrowser oder allgemein wenn ein IHTMLDocument2 vorliegt.

Setze THtmlListener.SinkKind: skDocument
Füge ein OnContextMenu Handler hinzu und erzeuge dafür ein Event.
Eine private Variable: HubLink: IHubLink;

HTML Listener verbinden:
Delphi-Quellcode:
procedure TForm1.ConnectHtmlListener(ASender: TObject);
var
  Doc: IHTMLDocument2;
  CPC: IConnectionPointContainer;
begin
  if not Assigned(HubLink) then
  begin
    Doc := GetFrameDoc(EmbeddedWB1.Doc2, 'oben');
    if Doc <> nil then
    begin
      Doc.QueryInterface(IConnectionPointContainer, CPC);
      if Assigned(CPC) then
        HubLink := HtmlListener1.Connect2(CPC);
    end;
  end;
end;
Oncontextmenu Handler:

Delphi-Quellcode:
procedure TForm1.HtmlListener1HandlersOncontextmenuHandle(Sender: TObject;
  Event: IHTMLEventObj);
begin
  // Contextmenu deaktivieren:
   Event.cancelBubble := True;
   Event.ReturnValue := False;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz