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