Einzelnen Beitrag anzeigen

HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#367

AW: Google Maps über COM (Component Object Model)

  Alt 28. Dez 2012, 20:48
Wie kann man den Text eines GoogleMaps-Controls ändern?

Derzeit lautet der Text zum Beispiel "Text" in Fettdruck und ich möchte je nach Bool-Zustand den Text entweder in normal oder in fett ausgeben.

Derzeit ändert sich beim Click folgendes:
+ vorher: weiße Box mit Rahmen und dem Text "Text"
+ nachher: keine Box mehr, nur noch der Text "XXX"

Wie kann man die weiße Box erhalten und einfach nur '<b>Text</b>' durch 'Text' ohne Fettdruck ersetzen?

Wahrscheinlich greife ich auf das falsche InnerHTML-Objekt zu.

Vielen Dank im voraus!

Code:
procedure TGoogleMap.InitMap(Sender: TObject);
  var
    MyOptions        : TMapOptions;
    MyMap            : TMap;
    AControlDiv      : TNode;
    AControl         : TJScriptObject;
begin
  with Script(WebBrowser) do begin
    MyOptions := TMapOptions.Create(Script(WebBrowser));
    with MyOptions do begin
      Zoom := 12;
      Center := New(Google.Maps.LatLng(53.250249,9.835209));
      MapTypeID := Google.Maps.MapTypeID.Roadmap;
    end;
    MyMap := New(Google.Maps.Map(MyOptions));

    MyMap.OnZoomChanged := MapZoomChanged;
    MyMap.OnDragEnd    := MapDragEnd;

    { add button control }
    AControlDiv := Document.CreateDivNode;
    AControl   := TJScriptObject.Create;
    InitControl(AControlDiv);
    MyMap.Controls[Google.Maps.ControlPosition.TopLeft].Push(AControlDiv);
  end;

  if Assigned(Callback) then Callback(Sender);
end;

procedure TGoogleMap.InitControl(AControlDiv: TNode);
  var AControlUI, AControlText: TNode;
begin
  with Script(WebBrowser) do begin
    AControlDiv.Style.Padding := '5px';
    AControlUI := Document.CreateDivNode;
    with AControlUI do
    begin
      with Style do
      begin
        BackgroundColor :=clWhite;
        BorderStyle    :='solid';
        BorderWidth    :='1px';
        Cursor         :='pointer';
        TextAlign      :='center';
      end;
      Title:='a hint to pop up';
    end;
    AControlDiv.AppendChild(AControlUI);

    AControlText := Document.CreateDivNode;
    with AControlText do begin
      with Style do begin
        FontFamily  := 'Arial,sans-serif';
        FontSize    := '12px';
        PaddingLeft := '4px';
        PaddingRight := '4px';
      end;
      InnerHTML := '<b>Text</b>';
    end;
    AControlUI.AppendChild(AControlText);

    Google.Maps.Event.AddDomListener(AControlUI, 'click', NewFunction(ControlClick));
  end;
end;

procedure TGoogleMap.ControlClick;
begin
  with Script(Webbrowser) do Maps[0].Controls[Google.Maps.ControlPosition.TopLeft].Items[0].InnerHTML := 'XXX';
end;

Geändert von HJay (20. Jan 2013 um 12:37 Uhr)
  Mit Zitat antworten Zitat