2017-01-15 2 views
-3

Я использую Delphi Xe4 с библиотекой карт google. Я создал пример приложения, которое адрес клиентов на dbgrid.WebBrowser не назначен

В DBGrid случае я сделал

процедура TForm1.DBGrid1DblClick (Sender: TObject); var endereco: string; pesquisarendereco: string;

начинает

WebBrowser1.Enabled := True; 
    GMMap1.Active := True; 

    if dsClienteEndereco.DataSet.RecordCount > 0 then 

    begin 

    GMGeoCode1.Geocode(qryClienteEndereco.FieldByName('ENDERECORESIDENCIA').AsString); 
    endereco := qryClienteEnderecoENDERECORESIDENCIA.Value; 

    GMMarker1.Items[dsClienteEndereco.DataSet.Recno].CenterMapToMarker; 

    pesquisarendereco:='http://maps.google.com/maps?q='+endereco; 
    WebBrowser1.Navigate(pesquisarendereco); 

    end; 

конца;

Но когда я делаю двойной щелчок, он показывает мне сообщение: webbrowser не оспаривается.

Как я могу это решить?

Лучшие Андерсон

+0

Какое сообщение об ошибке. Пожалуйста, дайте это полностью, дословно. –

+0

Здравствуйте, сообщение: WebBrowser не назначен. Если я нажму Ok, вернется обратно к приложению. –

+1

Похоже, вам нужно связать карту с браузером –

ответ

1

Перед добавлением элементов к карте через GMMarker1, вы должны быть уверены, что Geocoder возвращает действительные координаты. Когда у вас есть действительные координаты, компонент GMMarker1 ожидает, что вы добавите маркер, используя широту и долготу из геокодирования. Попробуйте это:

WebBrowser1.Enabled := True; 
    GMMarker1.Map := GMMap1; 
    GMMap1.WebBrower := WebBrowser1; 
    GMMap1.Active := True; 

    if dsClienteEndereco.DataSet.RecordCount > 0 then 
    begin 

     GMGeoCode1.Geocode(qryClienteEndereco.FieldByName('ENDERECORESIDENCIA').AsString); 
     If GmGeoCode1.Count <> 0 then 
     begin 
     endereco := qryClienteEnderecoENDERECORESIDENCIA.Value; 
     GMMarker1.Add(GmGeoCode1[0].Geometry.Location.Lat, GmGeoCode1[0].Geometry.Location.Lng, endereco); 
     GMMarker1.items[GMMarker1.Count-1].CenterMapToMarker; 

     // you shouldn't need these lines, the WebBrowser should navigate on its own 
     //pesquisarendereco:='http://maps.google.com/maps?q='+endereco; 
     //WebBrowser1.Navigate(pesquisarendereco); 
     end; 

    end; 
+0

Я изменил код в соответствии с вашим, и когда я выполнил приложение, он возвращает ошибки. Сообщение Javascript «DoMap не определено», я нажал «Да», чтобы продолжить, возвращает сообщение об ошибке «Не удалось завершить операцию с ошибкой 80020101». –

+0

Я следил за ссылками http://stackoverflow.com/questions/26467638/gmlib-google-maps-infowindow-error и http://stackoverflow.com/questions/37175704/gmlib-could-not-complete-the-operation -due-to-error-80020101-v1-5-3 и приложения. Теперь, когда я открываю клик по адресу, показывающему на картах, но кажется, что карта освежает 1 мс. Как я могу изменить это и изменить только при нажатии? –

+0

Вы должны обновить свой вопрос, чтобы включить весь ваш текущий код, а затем, может быть, я могу помочь. –

-1

Я изменил DBGrid двойной щелчок на:

procedure TformHistoricoRotas.DBGrid1DblClick(Sender: TObject); 

var 
endereco : string; 
pesquisarendereco : string; 
Marker :TMarker; 

begin  

WebBrowser1.Enabled := True; 
GMMarker1.Map := GMMap1; 
GMMap1.WebBrowser := WebBrowser1; 

GMMap1.Active := True; 
if dsClienteEndereco.DataSet.RecordCount > 0 then 
begin 
GMGeoCode1.Geocode(qryClienteEndereco.FieldByName('ENDERECORESIDENCIA').AsString); 
If GmGeoCode1.Count <> 0 then 
begin 
endereco := IntToStr(qryClienteEnderecoPRIORIDADE.Value)+', '+qryClienteEnderecoCHECKOUT.Value+', '+qryClienteEnderecoENDERECORESIDENCIA.Value; 
GMMarker1.Add(GmGeoCode1[0].Geometry.Location.Lat, GmGeoCode1[0].Geometry.Location.Lng, endereco); 
//GMMarker1.Add(GmGeoCode1[0].Geometry.Location.Lat, GmGeoCode1[0].Geometry.Location.Lng, endereco); 
GMMarker1.items[GMMarker1.Count-1].CenterMapToMarker; 
GMMap1.Precision := 30; 
end; 
end; 
end; 

, и она работала.

Теперь, когда я нажимаю на любую строку на dbgrid-шоу на карте google внутри веб-браузера.

Смежные вопросы