Hallo Stefan,
vielen Dank für das Lob und die Spende! Ich werde so schnell wie möglich die Bonus-Units an Dich abschicken.
Delphi-Quellcode:
function Script(Browser: TOleControl = nil): TScript;
//...
ist eine Funktion aus der
Unit gmAPI, die das aktuelle Script-Objekt liefert (falls der Aufruf ohne Parameter erfolgt - das reicht aus, wenn nur eine TWebBrowser-Komponente verwendet wird) oder das zu einem bestimmten IE-
ActiveX gehörende Script-Objekt.
Dadurch braucht dieses Objekt nicht lokal gespeichert zu werden.
Wird jetzt
Delphi-Quellcode:
if Script=nil then [...];
if assigned(Script(WebBrowser1)) then [...];
//oder
Script.xxx;
verwendet, darf keine lokale Variable mit diesem Namen existieren oder es muß der Unitname angegeben werden:
Delphi-Quellcode:
if gmAPI.Script=nil then [...];
if assigned(gmAPI.Script(WebBrowser1)) then [...];
//oder
gmAPI.Script.xxx;
Die Methode InitMap (kann auch beliebig anders heißen) ist - zumindest bis Delphi 2007 - ein reguläres TNotifyEvent mit folgendem Aufbau:
Delphi-Quellcode:
procedure TForm1.InitMap(Sender: TObject);
begin
with TScript(Sender) do
begin
Google.Maps.xxx; //-> Zugriff auf das Script-Objekt
end;
[...]
TScript(Sender).Google.Maps.xxx; //-> Zugriff ohne with-Statement
end;
Die Funktionsweise kann man sich so vorstellen:
Um Zugriff zur JavaScript-Engine des Browsers zu erhalten, muß ein TScript-Objekt angelegt werden. Das geschieht unter Angabe der Browser-Komponente:
Delphi-Quellcode:
TScript.Create(WebBrowser1);
//...
Über dieses Script-Objekt erfolgen dann alle weiteren Zugriffe auf das Google Maps
API. Das muß aber erst noch geladen werden:
Wird eine der Funktionen
LoadAPI(InitMap) oder
LoadAPIAsync(InitMap) des Script-Objektes aufgerufen, lädt das Framework das JavaScript-
API unter Verwendung der gewünschten Parameter von den Google-Servern. Wurde das
API von der Browser-Komponente vollständig geladen, wird vom Framework die angegebene Methode
InitMap aufgerufen und als Parameter
Sender das Script-Objekt übergeben, damit die Karte erstellt werden kann. Das entspricht zum Beispiel dem Verhalten eines Buttons, wenn durch Doppelklick oder im Objekt-Inspektor eine OnClick-Methode angelegt wurde und der Button zu Laufzeit betätigt wird.