AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

VCL Programm in fmx konvertieen

Ein Thema von champagner · begonnen am 11. Jun 2014 · letzter Beitrag vom 11. Jun 2014
 
champagner

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

VCL Programm in fmx konvertieen

  Alt 11. Jun 2014, 16:05
Hallo,

ich habe einen Code zusammengebastelt, der als VCL-Anwendung ganz normal funktioniert. Es wird ein Webbrowser geöffnet und Google maps angezeigt:

Code:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, XPMan, ComCtrls,MSHTML;

type
  TForm2 = class(TForm)
    WebBrowser1: TWebBrowser;
    LabelAddress: TLabel;
    PanelHeader: TPanel;
    ButtonGotoLocation: TButton;
    MemoAddress: TMemo;
    ButtonGotoAddress: TButton;
    LabelLatitude: TLabel;
    LabelLongitude: TLabel;
    Longitude: TEdit;
    Latitude: TEdit;
    CheckBoxTraffic: TCheckBox;
    CheckBoxBicycling: TCheckBox;
    CheckBoxStreeView: TCheckBox;
    ButtonClearMarkers: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    procedure FormCreate(Sender: TObject);
    procedure ButtonGotoAddressClick(Sender: TObject);
    procedure ButtonGotoLocationClick(Sender: TObject);
    procedure CheckBoxTrafficClick(Sender: TObject);
    procedure CheckBoxBicyclingClick(Sender: TObject);
    procedure CheckBoxStreeViewClick(Sender: TObject);
    procedure ButtonClearMarkersClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
  private
    { Private declarations }
    HTMLWindow2: IHTMLWindow2;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses
   ActiveX, Unit1;



{$R *.dfm}

const
HTMLStr: AnsiString =
'<html> '+
'<head> '+
'<meta name="viewport" content="initial-scale=1.0, user-scalable=yes" /> '+
'<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> '+
'<script type="text/javascript"> '+
''+
''+
' var geocoder; '+
' var map; '+
' var Beachclub; '+
' var marker; '+                // Markierung
' var trafficLayer;'+            // Layer Verkehr
' var bikeLayer;'+               // Layer
' var markersArray = [];'+
''+
''+
' function initialize() { '+
''+
'   geocoder = new google.maps.Geocoder();'+
''+
'   var latlng = new google.maps.LatLng(39.550189, 2.691211); '+
'   var latlng2 = new google.maps.LatLng(39.551200, 2.691211); '+
''+
'   var myOptions = { '+
'     zoom:     15, '+
'     center:   latlng, '+
'     mapTypeId: google.maps.MapTypeId.SATELLITE, '+       // ROADMAP (GROß geschrieben)
'     mapTypeControl: true, '+
'     mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU} '+
'                   }; '+
''+
'   map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); '+
''+
'   marker   = new google.maps.Marker({ position: latlng , map: map, title: "Hello World!" }); '+
'   Beachclub = new google.maps.Marker({ position: latlng2, title: "Hello AAAA" }); '+
''+
'   trafficLayer = new google.maps.TrafficLayer();'+
'   bikeLayer = new google.maps.BicyclingLayer();'+
'   map.set("streetViewControl", false);'+
' } '+
''+
''+
' function codeAddress(address) { '+
'   if (geocoder) {'+
'     geocoder.geocode( { address: address}, function(results, status) { '+
'       if (status == google.maps.GeocoderStatus.OK) {'+
'         map.setCenter(results[0].geometry.location);'+
'         PutMarker(results[0].geometry.location.lat(), results[0].geometry.location.lng(), results[0].geometry.location.lat()+","+results[0].geometry.location.lng());'+
'       } else {'+
'         alert("Geocode was not successful for the following reason: " + status);'+
'       }'+
'     });'+
'   }'+
' }'+
''+
''+
' function GotoLatLng(Lat, Lang) { '+
'  var latlng = new google.maps.LatLng(Lat,Lang);'+
'  map.setCenter(latlng);'+
'  PutMarker(Lat, Lang, Lat+","+Lang);'+
' }'+
''+
''+
'function ClearMarkers() {  '+
' if (markersArray) {        '+
'   for (i in markersArray) {  '+
'     markersArray[i].setMap(null); '+
'   } '+
' } '+
'}  '+
''+
' function PutMarker(Lat, Lang, Msg) { '+
'  var latlng = new google.maps.LatLng(Lat,Lang);'+
'  var marker = new google.maps.Marker({'+
'     position: latlng, '+
'     map: map,'+
'     title: Msg+" ("+Lat+","+Lang+")"'+
' });'+
' markersArray.push(marker); '+
' }'+
''+
''+
' function TrafficOn()  { trafficLayer.setMap(map); }'+
''+
' function TrafficOff() { trafficLayer.setMap(null); }'+
''+''+
' function CheckBox1On()  { map.set ("overviewMapControl", true); }'+     //
''+
' function CheckBox1Off() { map.set ("overviewMapControl", false); }'+    //
''+''+

' function CheckBox2On()  { Beachclub.setMap(map); }'+     //
''+
' function CheckBox2Off() { Beachclub.setMap(null); }'+     //
''+''+

' function BicyclingOn() { bikeLayer.setMap(map); }'+
''+
' function BicyclingOff(){ bikeLayer.setMap(null);}'+
''+
' function StreetViewOn() { map.set("streetViewControl", true); }'+
''+
' function StreetViewOff() { map.set("streetViewControl", false); }'+
''+
''+'</script> '+
'</head> '+
'<body onload="initialize()"> '+
' <div id="map_canvas" style="width:100%; height:100%"></div> '+
'</body> '+
'</html> ';


procedure TForm2.FormCreate(Sender: TObject);
var
  aStream    : TMemoryStream;
begin
   WebBrowser1.Navigate('about:blank');
    if Assigned(WebBrowser1.Document) then
    begin
      aStream := TMemoryStream.Create;
      try
         aStream.WriteBuffer(Pointer(HTMLStr)^, Length(HTMLStr));
         //aStream.Write(HTMLStr[1], Length(HTMLStr));
         aStream.Seek(0, soFromBeginning);
         (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream));
      finally
         aStream.Free;
      end;
      HTMLWindow2 := (WebBrowser1.Document as IHTMLDocument2).parentWindow;

    end;
end;


procedure TForm2.ButtonGotoLocationClick(Sender: TObject);
begin
   HTMLWindow2.execScript(Format('GotoLatLng(%s,%s)',[Latitude.Text,Longitude.Text]), 'JavaScript');
end;

procedure TForm2.ButtonClearMarkersClick(Sender: TObject);
begin
  HTMLWindow2.execScript('ClearMarkers()', 'JavaScript')
end;

procedure TForm2.ButtonGotoAddressClick(Sender: TObject);
var
   address   : string;
begin
   address := MemoAddress.Lines.Text;
   address := StringReplace(StringReplace(Trim(address), #13, ' ', [rfReplaceAll]), #10, ' ', [rfReplaceAll]);
   HTMLWindow2.execScript(Format('codeAddress(%s)',[QuotedStr(address)]), 'JavaScript');
end;

procedure TForm2.CheckBoxStreeViewClick(Sender: TObject);
begin
    if CheckBoxStreeView.Checked then
     HTMLWindow2.execScript('StreetViewOn()', 'JavaScript')
    else
     HTMLWindow2.execScript('StreetViewOff()', 'JavaScript');

end;

procedure TForm2.CheckBox1Click(Sender: TObject);
begin
    if CheckBox1.Checked then
     HTMLWindow2.execScript('CheckBox1On()', 'JavaScript')
    else
     HTMLWindow2.execScript('CheckBox1Off()', 'JavaScript');
end;

procedure TForm2.CheckBox2Click(Sender: TObject);
begin
if CheckBox2.Checked then
     HTMLWindow2.execScript('CheckBox2On()', 'JavaScript')
    else
     HTMLWindow2.execScript('CheckBox2Off()', 'JavaScript');
end;

procedure TForm2.CheckBoxBicyclingClick(Sender: TObject);
begin
    if CheckBoxBicycling.Checked then
     HTMLWindow2.execScript('BicyclingOn()', 'JavaScript')
    else
     HTMLWindow2.execScript('BicyclingOff()', 'JavaScript');
 end;


procedure TForm2.CheckBoxTrafficClick(Sender: TObject);
begin
    if CheckBoxTraffic.Checked then
     HTMLWindow2.execScript('TrafficOn()', 'JavaScript')
    else
     HTMLWindow2.execScript('TrafficOff()', 'JavaScript');
 end;


end.
Jetzt habe ich, der ich neu in fmx bin, versucht, diesen Code in fmx umzuwandeln (zum Zwecke der Erstellung einer Android-Anwendung). Dabei tauchen folgende Probleme auf:

1. Fehlermeldung bei " private
HTMLWindow2: IHTMLWindow2;": Undeklarierter Bezeichner: "IHTMLWindow2"

2. Fehlermeldung bei "HTMLStr: AnsiString": Undeklarierter Bezeichner: "AnsiString"

3. Fehlermeldung in der FormCreate: "WebBrowser1.Document": Undeklarierter Bezeichner: "Document"

4. Fehlermeldung in der FormCreate: (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aSt ream));: Undeklarierter Bezeichner: 'IPersistStreamInit' UND "Operator ist auf diesen Operandentyp nicht anwendbar"

4. Wie steht es mit den uses?


Herzlichen Dank für jeden Hinweis. Ich bin gerne bereit, mich einzuarbeiten.
  Mit Zitat antworten Zitat
 

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz