Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebbrowser mit eigenen Glyphs im Designmode (https://www.delphipraxis.net/66530-twebbrowser-mit-eigenen-glyphs-im-designmode.html)

Mavarik 30. Mär 2006 23:38


TWebbrowser mit eigenen Glyphs im Designmode
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen!

Habe ein Problem mit dem TWebbrowser.
Ich versuche im Designmode eigene Glyphs für die unterschiedlichen Tags anzuzeigen.

MSDN erklärt es hier

Versucht habe ich folgendes:

Delphi-Quellcode:
Const
    IID_IOleCommandTarget:TGUID='{B722BCCB-4E68-101B-A2BC-00AA00404770}';
    CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
    CGID_MSHTML   : TGUID = '{DE4BA900-59CA-11CF-9592-444553540000}';  

procedure TMainform.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  wb2: IWebBrowser2;
  doc: IHTMLDocument2;
  Target : IOleCommandTarget;
  Valin,Valout : OleVariant;
  PtrGUID : PGUID;
 
begin
  if Succeeded(pDisp.QueryInterface(IID_IWebBrowser2, wb2)) then
  begin
    doc := wb2.Document as IHTMLDocument2;

    if Assigned(DOC) then
      begin
        doc.onMouseOver := TEventObject.Create(Document_OnMouseOver) as IDispatch;

        Doc.designMode := 'on';                           // Funktioniert!
        Doc.execCommand('2D-Position', false,true);       // Funktioniert!
        Doc.execCommand('MULTIPLESELECTION',false,true);  // Funktioniert!
        Doc.execCommand('Liveresize',false,true);         // Funktioniert!
       
        wb2.QueryInterface(IID_IOleCommandTarget,Target);
       
        New(PtrGUID);
        PtrGUID^ := CGID_MSHTML;
        Valin := '"%%div^^%%C:\\temp2\\glyphs\\divend.gif^^%%0^^%%3^^%%0^^%%4^^%%20^^%%15^^%%20^^%%15^^**';
//        Target.Exec(PtrGUID,2320,OLECMDEXECOPT_DODEFAULT,valin,valout); Sollte eigentlich die Build In Glyphs zeigen // Leider nicht...
        Target.Exec(PtrGUID,2337,0,valin,valout); // Funktioniert auch nicht....
  //      Target._Release; // Dieser Aufruf führt zu einer AV beim beenden des Programms...
        Dispose(PtrGUID);
      end;
end;
       
        {
#define IDM_SHOWALLTAGS            2320
#define IDM_SHOWALIGNEDSITETAGS    2321
#define IDM_SHOWSCRIPTTAGS         2322
#define IDM_SHOWSTYLETAGS          2323
#define IDM_SHOWCOMMENTTAGS        2324
#define IDM_SHOWAREATAGS           2325
#define IDM_SHOWUNKNOWNTAGS        2326
#define IDM_SHOWMISCTAGS           2327
#define IDM_SHOWZEROBORDERATDESIGNTIME        2328
       
#define IDM_EMPTYGLYPHTABLE        2336
#define IDM_ADDTOGLYPHTABLE        2337
#define IDM_REMOVEFROMGLYPHTABLE   2338
#define IDM_REPLACEGLYPHCONTENTS   2339
        }
Hat jemand von Euch eine Idee woran es liegen kann?

Grüße Frank :coder:

marabu 31. Mär 2006 07:55

Re: TWebbrowser mit eigenen Glyphs im Designmode
 
Hallo Frank,

du musst beim Kopieren etwas sorgfältiger sein - die opening quotes aus dem SDK gehören da nicht hin:

Code:
vIn := '[color=#ff0000]"[/color]%%div^^ ...
Und mit _Release() musst du dich auch nicht herum schlagen. Wenn du das Interface vorzeitig freigeben möchtest, dann einfach mit Target := nil.

Grüße vom marabu

Mavarik 31. Mär 2006 08:06

Re: TWebbrowser mit eigenen Glyphs im Designmode
 
Zitat:

Zitat von marabu
Hallo Frank,

du musst beim Kopieren etwas sorgfältiger sein - die opening quotes aus dem SDK gehören da nicht hin:

Code:
vIn := '[color=#ff0000]"[/color]%%div^^ ...
Und mit _Release() musst du dich auch nicht herum schlagen. Wenn du das Interface vorzeitig freigeben möchtest, dann einfach mit Target := nil.

Grüße vom marabu

Ja ist beim Kopieren hier ins Forum passiert... In meinem Quellcode habe ich es nicht...

Leider funktioniert es trotzdem nicht...

Auch der IDM_Showalltags funktioniert nicht...

Trotzdem Danke

Frank :coder:

marabu 31. Mär 2006 08:16

Re: TWebbrowser mit eigenen Glyphs im Designmode
 
Bei mir funktioniert es. Allerdings halte ich mich auch an die Dokumentation und gebe einen URL für das image an. Solltest du vielleicht auch mal probieren (file:///).

Delphi-Quellcode:
procedure TDemoForm.WebBrowserDocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  wb2: IWebBrowser2;
  doc2: IHTMLDocument2;
  oct: IOleCommandTarget;
  vIn: OleVariant;
  pg: PGUID;
begin
  if Succeeded(pDisp.QueryInterface(IID_IWebBrowser2, wb2)) then
  begin
    doc2 := wb2.Document as IHTMLDocument2;
    doc2.designMode := 'On';
    doc2.execCommand('2D-Position', false, true);
    doc2.execCommand('MultipleSelection', false, true);
    doc2.execCommand('LiveResize', false, true);
    vIn := '%%input^^'
         + '%%http://www.delphipraxis.net/images/smiles/icon_biggrin.gif^^'
         + '%%0^^%%3^^%%0^^%%4^^%%15^^%%15^^%%15^^%%15^^**' ;
    oct := wb2 as IOleCommandTarget;
    New(pg);
    pg^ := CGID_MSHTML;
    oct.Exec(pg, 2337, OLECMDEXECOPT_DODEFAULT, vIn, EmptyParam);
    Dispose(pg);
  end;
end;
marabu

Mavarik 31. Mär 2006 08:21

Re: TWebbrowser mit eigenen Glyphs im Designmode
 
PS.: Ach ja habe im Debugger übrigens folgende Meldung beim Aufruf von:
Delphi-Quellcode:
Target.Exec(PtrGUID,2337,0,valin,valout);
Modul laden: UNKNOWN_MODULE_541. ohne Debug-Infos..

Habe als Bitmap-Quelle mal den local webserver angegeben...
Es passiert auch überhaupt kein request auf die URL.

Falles es hilft!

Frank :coder:

marabu 31. Mär 2006 08:35

Re: TWebbrowser mit eigenen Glyphs im Designmode
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mit den Eigenheiten von D2K5 kann ich dir nicht helfen. Im Anhang der bei mir funktionerende Code.

marabu

Mavarik 31. Mär 2006 08:38

Re: TWebbrowser mit eigenen Glyphs im Designmode
 
:dp: :love:

DANKE es funktioniert! :dancer2:

Übrigens auch meine procedure... lediglich der div Tag will nicht...
Nachdem ich ein p genommen haben, lief es sofort... Warum auch immer...
Aber das werde ich schon finden...

Vielen Dank für deine Mühe... :thumb:

Frank :coder:

Mavarik 31. Mär 2006 09:52

Re: TWebbrowser mit eigenen Glyphs im Designmode
 
:wall: :wall: :wall:

Ojeee Danke nochmal für Deine Tipps...

Ich habe den Fehler gefunden... :wall:

War gestern abend vielleicht ein bischen zu spät...

Der DIV Tag, den ich zum testen genommen habe, war eine schlechte Idee...

Leider war kein DIV Tag in meiner Testdatei.... :roteyes:

Jetzt funkt es....

Grüsse Frank :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 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