Hallo Thom!
Ich habe ein paar Anfängerfragen zu dem genialen Framework. Leider begreife ich das Konzept dahinter noch nicht ganz. Vielleicht hast Du Zeit und Lust, ein paar Grundlagen zu erklären?
Mein Unverständnis fängt schon an beim FormShow der Demo-Routinen. Basierend auf der Demo "Overlay / Marker Simple":
Code:
procedure TForm1.FormShow(Sender: TObject);
begin
if Script=nil then with TScript.Create(WebBrowser1) do LoadAPIAsync(InitMap);
end;
Wieso gibt die Funktion Script hier nil zurück, so dass der WebBrowser1 korrekt zugeordnet wird? Die Funktion scheint doch ein TCustomScript-Objekt zu erzeugen und zurückzugeben?
Ich verstehe auch nicht, was beim Aufruf "LoadAPIAsync(InitMap)" der Prozedur InitMap als
Sender übergeben wird, so dass die Anweisung "with TScript(Sender)" mit Sinn erfüllt wird. Sehr kryptisch für mich.
In den Demo-Routinen werden die mit New() erzeugten Objekte MyMap oder Marker nur lokal verwendet und nicht freigegeben. Muss man auch zusätzlich erzeugte TMarker-Objekte nicht freigeben? Kümmert sich darum wirklich das Framework vollautomatisch?
Wäre die folgende Routine so korrekt in Deinem Sinne programmiert, um einen weiteren Marker einzufügen:
Code:
TForm1= ...
private
MyMap : TMap;
Marker2 : TMarker;
procedure TForm1.Button1Click(Sender: TObject);
var MarkerOptions: TMarkerOptions;
begin
with Script do begin
MarkerOptions := TMarkerOptions.Create;
with MarkerOptions do begin
Position:=New(Google.Maps.LatLng(-25.363882,131.044922));
Map:=MyMap;
end;
Marker2 := New(Google.Maps.Marker(MarkerOptions));
end;
end;
Muss ich auch Marker2 nicht selbst freigeben?
Wie würde ich die FormShow-Routine erweitern müssen, um ZWEI separate TWebBrowser-Objekte gleichzeitig verwenden zu können? Geht das überhaupt?