Einzelnen Beitrag anzeigen

Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#158

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

  Alt 5. Dez 2011, 12:58
Das Browser-Kontextmenü wird von den Karten generell unterdrückt. Diesen Effekt kann man auch auf der Google Maps Seite überprüfen. Dort wird das Kontextmenü des IE's durch ein eigenes ersetzt.

Das Programm muß sich also selbst darum kümmern, die Karte auszudrucken. Dafür gibt es mehrere Möglichkeiten.
Die einfachste - aber auch schlechteste - Methode ist folgender Aufruf:
Delphi-Quellcode:
var
  pvaIn, pvaOut: OleVariant;
begin
  [...]
  WebBrowser1.ExecWB(OLECMDID_PRINT,
                     OLECMDEXECOPT_PROMPTUSER, //mit Druckerdialog
                     {OLECMDEXECOPT_DONTPROMPTUSER,} //ohne Druckerdialog
                     pvaIn,pvaOut);
  [...]
end;
Der IE versucht dann, die Karte formatfüllend (in der Regel A4) zu Papier zu bringen - das Ergebnis ist nicht zu gebrauchen.

Besser ist es, einen Screenshot der Karte als Bitmap anzufertigen und diesen anschließend mit dem eigenen Programm auszudrucken.
Druckerkomponenten gibt es reichlich - denkbar ist auch eine Report-Tool.
Wie ein Screenshot angefertigt werden kann, zeigt die Demo 5 - Async Callbacks aus der Beispielsammlung zur Version 1.x des Frameworks. Siehe dazu auch den Beitrag zum Beispiel 5.
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom ( 5. Dez 2011 um 13:14 Uhr)
  Mit Zitat antworten Zitat