Einzelnen Beitrag anzeigen

champagner

Registriert seit: 29. Apr 2008
46 Beiträge
 
Delphi XE6 Professional
 
#1

Javscript-function aufrufen, wenn function im HTML-header

  Alt 13. Jun 2014, 08:04
Hallo,

ich erstelle eine firemonkey app mit einer einfachen google-maps Einbindung. Zusätzlich möchte ich, dass eine function "marker1" auf das Ereignis "Button2.Click" ausgeführt wird.

Die function findet sich im header.

Die Frage lautet: wie rufe ich eine function auf, die mit jacascript im html-header steht? In der VCL-Version hat es mit HTMLWIndow2 etc. funktioniert, aber nicht in der fmx (firmonkey)-Version.


Delphi-Quellcode:
unit Unit2;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  System.Sensors, System.Sensors.Components, FMX.WebBrowser, FMX.ListBox;

type
  TForm2 = class(TForm)
    LocationSensor1: TLocationSensor;
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.fmx}

uses Unit1;

const
{ Was used sample from }
{ https://developers.google.com/maps/documentation/javascript/examples/directions-panel }
cRoute =
'<!DOCTYPE html>'
+ '<html>'
+ ' <head>'
+ ' <meta name="viewport" content="initial-scale=1.0, user-scalable=no">'
+ ' <meta charset="utf-8">'
+ ' <title>Displaying text directions with <code>setPanel()</code></title>'
+ ' <style>'
+ ' html, body, #map-canvas {'
+ ' height: 100%;'
+ ' margin: 0px;'
+ ' padding: 0px'
+ ' }'
+ ' </style>'
+ ' <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>'
+ ' <script>'
+ ''
+ ' function initialize() {'
+ ''
+ ' var latlng = new google.maps.LatLng(39.550189, 2.691211); '
+ ' var latlng2 = new google.maps.LatLng(39.551200, 2.691211); '
+ ''
+ ' var mapOptions = {'
+ ' zoom: 16,'
+ ' center: latlng, '
+ ' mapTypeId: google.maps.MapTypeId.ROADMAP, '       // ROADMAP (GROß geschrieben)
+ ' };'
+ ' var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);'

+ ' var marker = new google.maps.Marker({'
+ ' position: latlng,'
+ ' title: "Hello World!"'
+ ' });'
+ ' marker.setMap(map);'
+ ''
+ '}'
+ ''
+ ' function marker1() {new google.maps.LatLng(39.551200, 2.691211)};'// Um diese function geht es <--------------
+ ''
+ 'google.maps.event.addDomListener(window, ''load'', initialize);'
+ ''
+ ' </script>'
+ ' </head>'
+ ' <body>'
+ ' <div id="map-canvas" style="width:100%; height:100%"> </div> '
+ ' </body>'
+ '</html>';
procedure TForm2.Button1Click(Sender: TObject);
begin
form2.close;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
WebBrowser1.LoadFromStrings(cRoute, '');
end;

procedure TButton2.Click (Sender: TObject);
begin
// Was kommt hierhin, um die function marker1 aufzurufen? Die function soll nur ausgeführt werden auf "Button2.Click". <--------------
end;

end.

Herzlichen Dank. Ich arbeite mich auch gerne ein.

Geändert von champagner (14. Jun 2014 um 05:48 Uhr)
  Mit Zitat antworten Zitat