| 
        
          | 
              
                | Author |  Topic  |  |  
                | bmesser
    
 
                United Kingdom246 Posts
 | 
                    
                      |  Posted - May 29 2014 :  02:04:31     
 |  
                      | I've just downloaded the GeoMaps demo and try to build it using Delphi XE6 and fail with the following: 
 
 [dcc32 Fatal Error] iopreviews.pas(2268): F2039 Could not create output file 'C:\Program Files (x86)\ImageEn\DelphiXE6\iopreviews.dcu' 
 It looks like it's trying to write to the program files and Windows won't let it.
 
 I can't see anything in the code with any filepath references, so maybe its one of the compiler settings is wrong and XE6 is new to me.
 
 Bruce.
 |  |  
                | bmesser
    
 
                United Kingdom246 Posts
 | 
                    
                      |  Posted - May 29 2014 :  08:29:13     
 |  
                      | Transferred the code to a new project and now things are working fine! |  
                      |  |  |  
                | masrnet2006
   
 
                Saudi Arabia59 Posts
 | 
                    
                      |  Posted - May 31 2014 :  23:31:03     
 |  
                      | unit unit_MainGis_google; 
 interface
 
 uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, XPMan, ComCtrls,MSHTML;
 //  uses MSHTML;
 type
 TFmain_unit_MainGis_google = class(TForm)
 //  XPManifest1: TXPManifest;
 
 WebBrowser1: TWebBrowser;
 PanelHeader: TPanel;
 pnl_top: TPanel;
 LabelAddress: TLabel;
 LabelLatitude: TLabel;
 LabelLongitude: TLabel;
 MemoAddress: TMemo;
 Longitude: TEdit;
 Latitude: TEdit;
 CheckBoxTraffic: TCheckBox;
 CheckBoxBicycling: TCheckBox;
 CheckBoxStreeView: TCheckBox;
 ButtonGotoLocation: TButton;
 ButtonGotoAddress: TButton;
 btn_open_html: TButton;
 btn_go: TButton;
 btn_web: TButton;
 btn_open_gis: TButton;
 btn_file_html_open: TButton;
 procedure FormCreate(Sender: TObject);
 procedure ButtonGotoLocationClick(Sender: TObject);
 procedure ButtonGotoAddressClick(Sender: TObject);
 procedure CheckBoxStreeViewClick(Sender: TObject);
 procedure CheckBoxBicyclingClick(Sender: TObject);
 procedure CheckBoxTrafficClick(Sender: TObject);
 procedure btn_open_htmlClick(Sender: TObject);
 procedure btn_goClick(Sender: TObject);
 procedure btn_webClick(Sender: TObject);
 procedure btn_open_gisClick(Sender: TObject);
 procedure btn_file_html_openClick(Sender: TObject);
 procedure WebBrowser1BeforeNavigate2(ASender: TObject;
 const pDisp: IDispatch; const URL, Flags, TargetFrameName, PostData,
 Headers: OleVariant; var Cancel: WordBool);
 private
 HTMLWindow2: IHTMLWindow2;
 FIsStartPage: Boolean;
 { Private declarations }
 public
 procedure AppendToWB(WB: TWebBrowser; const html: widestring) ;
 function BrowseURL(const URL: string) : boolean;
 procedure WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string) ;
 { Public declarations }
 end;
 
 var
 Fmain_unit_MainGis_google: TFmain_unit_MainGis_google;
 
 implementation
 uses
 Registry, ShellAPI, ActiveX;
 
 {$R *.dfm}
 const
 // LOCAL_PAGE ='file:///' +'F:\Alhasa.gov.sa\gis_googleMaps\gis_delphi.html';
 HTMLStr_LOCAL_PAGE ='file:///' +'F:\Alhasa.gov.sa\gis_googleMaps\gis_delphi.html';
 //---------------------------------------------------------------------------------------------------------------------
 HTMLStr: string = //i put The code for the web page page wich load the google maps in a string const, you can use an external html file too or embed the page in a resource and then load in a stream
 '<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"> '+
 ''+
 ''+//Declare the globals vars to be used in the javascript functions
 '  var geocoder; '+
 '  var map;  '+
 '  var trafficLayer;'+
 '  var bikeLayer;'+
 ''+
 ''+
 '  function initialize() { '+
 '    geocoder = new google.maps.Geocoder();'+
 '    var latlng = new google.maps.LatLng(40.714776,-74.019213); '+ //Set the initial coordinates for the map
 '    var myOptions = { '+
 '      zoom: 13, '+
 '      center: latlng, '+
 '      mapTypeId: google.maps.MapTypeId.ROADMAP '+ //Set the default type map
 '    }; '+
 '    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); '+
 '    trafficLayer = new google.maps.TrafficLayer();'+ //Create the traffic Layer instance
 '    bikeLayer = new google.maps.BicyclingLayer();'+ //Create the Bicycling Layer instance
 '  } '+
 ''+
 ''+
 '  function codeAddress(address) { '+ //function to translate an address to coordinates and put and marker.
 '    if (geocoder) {'+
 '      geocoder.geocode( { address: address}, function(results, status) { '+
 '        if (status == google.maps.GeocoderStatus.OK) {'+
 '          map.setCenter(results[0].geometry.location);'+
 '          var marker = new google.maps.Marker({'+
 '              map: map,'+
 '              position: results[0].geometry.location'+
 '          });'+
 '        } else {'+
 '          alert("Geocode was not successful for the following reason: " + status);'+
 '        }'+
 '      });'+
 '    }'+
 '  }'+
 ''+
 ''+
 '  function GotoLatLng(Lat, Lang) { '+ //Set the map in the coordinates and put a marker
 '   var latlng = new google.maps.LatLng(Lat,Lang);'+
 '   map.setCenter(latlng);'+
 '   var marker = new google.maps.Marker({'+
 '      position: latlng, '+
 '      map: map,'+
 '      title:Lat+","+Lang'+
 '  });'+
 '  }'+
 ''+
 ''+
 '  function TrafficOn()   { trafficLayer.setMap(map); }'+ //Activate the Traffic layer
 ''+
 '  function TrafficOff()  { trafficLayer.setMap(null); }'+
 ''+''+
 '  function BicyclingOn() { bikeLayer.setMap(map); }'+//Activate the Bicycling layer
 ''+
 '  function BicyclingOff(){ bikeLayer.setMap(null);}'+
 ''+
 '  function StreetViewOn() { map.set("streetViewControl", true); }'+//Activate the streeview control
 ''+
 '  function StreetViewOff() { map.set("streetViewControl", false); }'+
 ''+
 ''+'</script> '+
 '</head> '+
 '<body onload="initialize()"> '+
 '  <div id="map_canvas" style="width:100%; height:100%"></div> '+
 '</body> '+
 '</html> ';
 //---------------------------------------------------------------------------------------------------------------------
 procedure TFmain_unit_MainGis_google.btn_file_html_openClick(Sender: TObject);
 
 const
 LOCAL_PAGE ='F:\Alhasa.gov.sa\gis_googleMaps\gis_delphi.html';
 begin
 FIsStartPage := True;
 // Webbrowser1.Navigate( 'file:///' +LOCAL_PAGE);
 Webbrowser1.Navigate( 'file:///' +LOCAL_PAGE);
 FIsStartPage := False;
 end;
 
 
 procedure TFmain_unit_MainGis_google.btn_goClick(Sender: TObject);
 var
 s: string;
 begin
 //  WebBrowser1.Navigate('http://aspxDelphi.net') ;
 //  s:= '<a href="http://delphi.about.com">go to About Delphi Programming</a>';
 //s:= '<a href="F:\Alhasa.gov.sa\gis_googleMaps\gis_delphi.html">go to About Delphi Programming</a>';
 AppendToWB(WebBrowser1,'gis_delphi.html');
 end;
 
 procedure TFmain_unit_MainGis_google.btn_open_gisClick(Sender: TObject);
 var
 aStream  : TMemoryStream;
 HTMLStr_new: widestring;
 ConStr: widestring;
 HTMLFile : Array[0..79] of WideChar;
 
 begin
 // HTMLStr_LOCAL_PAGE
 // StrPCopy(HTMLFile,HTMLStr_LOCAL_PAGE);
 begin
 WebBrowser1.Navigate('about:blank'); //Set the location to an empty page
 if Assigned(WebBrowser1.Document) then
 begin
 aStream := TMemoryStream.Create; //create a TStem to load the Page from the string
 try
 //Usage
 //  BrowseURL('http:delphi.about.com') ;
 //      F:\Alhasa.gov.sa\gis_googleMaps\gis_delphi.html
 aStream.WriteBuffer(Pointer(HTMLStr)^, Length(HTMLStr)); //Copy the string to the stream
 // aStream.WriteBuffer(Pointer(HTMLFile)^, Length(HTMLFile)); //Copy the string to the stream
 //aStream.Write(HTMLStr[1], Length(HTMLStr));
 aStream.Seek(0, soFromBeginning);
 (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream));//Load the page from the stream
 finally
 aStream.Free;
 end;
 HTMLWindow2 := (WebBrowser1.Document as IHTMLDocument2).parentWindow; //Set the instance of the parentWindow to call the javascripts functions
 end;
 end;
 end;
 
 procedure TFmain_unit_MainGis_google.btn_open_htmlClick(Sender: TObject);
 var
 aStream  : TMemoryStream;
 HTMLStr_new: widestring;
 ConStr: widestring;
 HTMLFile : Array[0..258] of WideChar;
 begin
 // http://theroadtodelphi.wordpress.com/2010/08/07/using-the-google-maps-api-v3-from-delphi-part-i-basic-functionality/
 //http://theroadtodelphi.wordpress.com/2010/08/09/using-the-google-maps-api-v3-from-delphi-part-ii-styled-maps/
 //http://theroadtodelphi.wordpress.com/2010/08/11/using-google-maps-static-maps-without-twebbrowser/
 //HTMLStr
 // BrowseURL('http:delphi.about.com') ;
 StrPCopy(HTMLFile,'F:\Alhasa.gov.sa\gis_googleMaps\gis_delphi.html');
 // StrPCopy(HTMLFile,'.\gis_delphi.html');
 
 //BrowseURL(HTMLFile) ; // web page
 
 // HTMLStr_new
 WebBrowser1.Navigate(HTMLFile); //Set the location to an empty page
 // Exit;
 //----------------------
 
 
 //---------------------
 //   F:\Alhasa.gov.sa\gis_googleMaps\gis_delphi.html
 end;
 
 procedure TFmain_unit_MainGis_google.btn_webClick(Sender: TObject);
 var
 sHTML,str : string;
 str_PAnsiChar:PAnsiChar ;
 HTMLFile : Array[0..79] of WideChar;
 begin
 //sHTML := '<a href="http://delphi.about.com">GOTO</a>' +  '<b>About Delphi Programming</b>';
 StrPCopy(HTMLFile,'F:\Alhasa.gov.sa\gis_googleMaps\gis_delphi.html');
 WebBrowser1.Navigate(HTMLFile); //Set the location to an empty page
 // WBLoadHTML(WebBrowser1,WideCharToString(HTMLFile)) ;
 end;
 
 procedure TFmain_unit_MainGis_google.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');//Call the function codeAddress to go the address
 end;
 
 
 procedure TFmain_unit_MainGis_google.ButtonGotoLocationClick(Sender: TObject);
 begin
 HTMLWindow2.execScript(Format('GotoLatLng(%s,%s)',[Latitude.Text,Longitude.Text]), 'JavaScript');//Call the function GotoLatLng to go the coordinates
 end;
 
 procedure TFmain_unit_MainGis_google.CheckBoxBicyclingClick(Sender: TObject);
 begin
 if CheckBoxBicycling.Checked then
 HTMLWindow2.execScript('BicyclingOn()', 'JavaScript')//Activate the Bicycling View option
 else
 HTMLWindow2.execScript('BicyclingOff()', 'JavaScript');//Deactivate the Bicycling View option
 end;
 
 procedure TFmain_unit_MainGis_google.CheckBoxStreeViewClick(Sender: TObject);
 begin
 if CheckBoxStreeView.Checked then
 HTMLWindow2.execScript('StreetViewOn()', 'JavaScript') //Activate the Street View option
 else
 HTMLWindow2.execScript('StreetViewOff()', 'JavaScript');//Deactivate the Street View option
 
 end;
 
 procedure TFmain_unit_MainGis_google.CheckBoxTrafficClick(Sender: TObject);
 begin
 if CheckBoxTraffic.Checked then
 HTMLWindow2.execScript('TrafficOn()', 'JavaScript')//Activate the Traffic View option
 else
 HTMLWindow2.execScript('TrafficOff()', 'JavaScript');//Deactivate the Traffic View option
 end;
 
 procedure TFmain_unit_MainGis_google.FormCreate(Sender: TObject);
 var
 aStream  : TMemoryStream;
 
 begin
 
 //   HTMLStr_LOCAL_PAGE
 
 
 //HTMLStr_LOCAL_PAGE
 //  WebBrowser1.Navigate('about:blank'); //Set the location to an empty page
 WebBrowser1.Navigate(HTMLStr_LOCAL_PAGE); //Set the location to an empty page
 if Assigned(WebBrowser1.Document) then
 begin
 (*
 
 
 aStream := TMemoryStream.Create; //create a TStem to load the Page from the string
 try
 //Usage
 //  BrowseURL('http:delphi.about.com') ;
 //      F:\Alhasa.gov.sa\gis_googleMaps\gis_delphi.html
 
 aStream.WriteBuffer(Pointer((HTMLStr))^, Length(HTMLStr)); //Copy the string to the stream
 //aStream.Write(HTMLStr[1], Length(HTMLStr));
 aStream.Seek(0, soFromBeginning);
 (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream));//Load the page from the stream
 finally
 aStream.Free;
 end;
 *)
 HTMLWindow2 := (WebBrowser1.Document as IHTMLDocument2).parentWindow; //Set the instance of the parentWindow to call the javascripts functions
 end;
 end;
 //----------------
 
 function TFmain_unit_MainGis_google.BrowseURL(const URL: string) : boolean;
 var
 Browser: string;
 begin
 Result := True;
 Browser := '';
 with TRegistry.Create do
 try
 RootKey := HKEY_CLASSES_ROOT;
 Access := KEY_QUERY_VALUE;
 if OpenKey('\htmlfile\shell\open\command', False) then
 Browser := ReadString('') ;
 CloseKey;
 finally
 Free;
 end;
 if Browser = '' then
 begin
 Result := False;
 Exit;
 end;
 Browser := Copy(Browser, Pos('"', Browser) + 1, Length(Browser)) ;
 Browser := Copy(Browser, 1, Pos('"', Browser) - 1) ;
 ShellExecute(0, 'open', PChar(Browser), PChar(URL), nil, SW_SHOW) ;
 end;
 //----------
 procedure TFmain_unit_MainGis_google.AppendToWB(WB: TWebBrowser; const html: widestring) ;
 var
 Range: IHTMLTxtRange;
 begin
 Range := ((WB.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange;
 Range.Collapse(False) ;
 Range.PasteHTML(html) ;
 end;
 //---------------
 procedure TFmain_unit_MainGis_google.WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string) ;
 var
 sl: TStringList;
 ms: TMemoryStream;
 begin
 WebBrowser.Navigate('about:blank') ;
 while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
 Application.ProcessMessages;
 
 if Assigned(WebBrowser.Document) then
 begin
 sl := TStringList.Create;
 try
 ms := TMemoryStream.Create;
 try
 sl.Text := HTMLCode;
 sl.SaveToStream(ms) ;
 ms.Seek(0, 0) ;
 (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
 finally
 ms.Free;
 end;
 finally
 sl.Free;
 end;
 end;
 end;
 
 
 procedure TFmain_unit_MainGis_google.WebBrowser1BeforeNavigate2(
 ASender: TObject; const pDisp: IDispatch; const URL, Flags, TargetFrameName,
 PostData, Headers: OleVariant; var Cancel: WordBool);
 var
 newURL: string;
 begin
 newURL := URL;
 // For local links, don't show a dialog but open the file directly
 if (not FIsStartPage) and FileExists(newURL) then
 begin
 Cancel := True;
 ShellExecute(Application.Handle, 'open', PChar(newURL), nil, nil, SW_NORMAL);
 end;
 end;
 
 //-------------
 end.
 //-----------
 
 |  
                      |  |  |  
                | masrnet2006
   
 
                Saudi Arabia59 Posts
 | 
                    
                      |  Posted - May 31 2014 :  23:33:16     
 |  
                      | <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">
 
 //Declare the globals vars to be used in the javascript functions
 var geocoder;
 var map;
 var trafficLayer;
 var bikeLayer;
 function initialize() {
 geocoder = new google.maps.Geocoder();
 var latlng = new google.maps.LatLng(40.714776,-74.019213);   //Set the initial coordinates for the map
 var myOptions = {
 zoom: 13,
 center: latlng,
 mapTypeId: google.maps.MapTypeId.ROADMAP   //Set the default type map
 };
 map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
 trafficLayer = new google.maps.TrafficLayer();  //Create the traffic Layer instance
 bikeLayer = new google.maps.BicyclingLayer();  //Create the Bicycling Layer instance
 }
 
 
 function codeAddress(address) {   //function to translate an address to coordinates and put and marker.
 if (geocoder) {
 geocoder.geocode( { address: address}, function(results, status) {
 if (status == google.maps.GeocoderStatus.OK) {
 map.setCenter(results[0].geometry.location);
 var marker = new google.maps.Marker({
 map: map,
 position: results[0].geometry.location
 });
 } else {
 alert("Geocode was not successful for the following reason: " + status);
 }
 });
 }
 }
 
 
 function GotoLatLng(Lat, Lang) {   //Set the map in the coordinates and put a marker
 var latlng = new google.maps.LatLng(Lat,Lang);
 map.setCenter(latlng);
 var marker = new google.maps.Marker({
 position: latlng,
 map: map,
 title:Lat+","+Lang
 });
 }
 
 
 function TrafficOn()   { trafficLayer.setMap(map); }  //Activate the Traffic layer
 
 function TrafficOff()  { trafficLayer.setMap(null); }
 
 function BicyclingOn() { bikeLayer.setMap(map); } //Activate the Bicycling layer
 
 function BicyclingOff(){ bikeLayer.setMap(null);}
 
 function StreetViewOn() { map.set("streetViewControl", true); } //Activate the streeview control
 
 function StreetViewOff() { map.set("streetViewControl", false); }
 
 </script>
 </head>
 <body onload="initialize()">
 <div id="map_canvas" style="width:100%; height:100%"></div>
 </body>
 </html>  ;
 |  
                      |  |  |  
                | masrnet2006
   
 
                Saudi Arabia59 Posts
 | 
                    
                      |  Posted - May 31 2014 :  23:36:05     
 |  
                      | const LOCAL_PAGE ='c:\gis_delphi.html';
 begin
 FIsStartPage := True;
 // Webbrowser1.Navigate( 'file:///' +LOCAL_PAGE);
 Webbrowser1.Navigate( 'file:///' +LOCAL_PAGE);
 FIsStartPage := False;
 end;
 
 |  
                      |  |  |  
                | masrnet2006
   
 
                Saudi Arabia59 Posts
 | 
                    
                      |  Posted - Jun 05 2014 :  00:49:36     
 |  
                      | ImageEnVect.IO.Params.JPEG_Quality := Quality; // for jpg ImageEnMView_Main_ms:=TMemoryStream.Create;
 // ImageEnVect.IO.SaveToStream(ImageEnMView_Main_ms);
 ImageEnVect.IO.SaveToStreamJpeg(ImageEnMView_Main_ms);
 ImageEnMView_Main_ms.Position := 0;
 
 str_Count := RDM.ha_InsertQuery(RDM.MainTable_Update, APAGESRL);
 ImageEnMView_Main_ms.Free;
 
 |  
                      |  |  |  
                |  |  Topic  |  |  |  |