AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) TWebBrowser-Control und Einstellmöglichkeiten
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser-Control und Einstellmöglichkeiten

Ein Thema von Bernhard Geyer · begonnen am 17. Mär 2016 · letzter Beitrag vom 29. Mai 2018
Antwort Antwort
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#1

TWebBrowser-Control und Einstellmöglichkeiten

  Alt 17. Mär 2016, 11:35
Ich habe hier das Problem das sich der IE über TWebbrowser-Gesteuert etwas anders verhälte als der "normale" IE.
Die Einstellung über den Registry-Key FEATURE_BROWSER_EMULATION ist schon gesetzt so das hier kein Emulierter IE7 mehr läuft.

Ich habe hier zwei Probleme:

1, Eine HTML-Anwendung läuft gut Touch-Bedienbar im normalen IE. Embedded habe ich das Problem das pinch zoom Events nicht so verarbeitet werden wie gedacht. Die Anwendung erlaubt das normalerweise nur in definierten Bereichen. im TWebbrowser zoome ich aber die gesamte Anwendung (Was nicht gewünscht ist).
In der Übergabe der Browser-Features stehen die Properties navigator.mspointer und navigator.pointer auf false. Im "richten" IE auf True

2, Die Anwendung startet zu klein gezoomt auf High-DPI-Devices (hier SurfacePro4 mit 200%/196dpi).
Ich sehe als unterschied das im "richtigen" IE der Browser nur als Info ein Logische DPI-Größe hat (also 3000 Pixel "* 196 dpi" = 1500 Logische Pixel) und im TWebBrowser der IE die richtige DPI-Zahl sieht.

Wie könnte man den TWebbrowser so einstellen das er sich hier auch wie ein "richtiger" IE verhält?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TWebBrowser-Control und Einstellmöglichkeiten

  Alt 17. Mär 2016, 13:37
Keine Ahnung, ob ich deine Frage richtig verstehe, aber auch ich habe mich einige Stunden mit dem Zoomen im TWebBrowser beschäftigt. Ich habe eine Trackbar mit der der Benutzer den Zoom verändern kann. Hier paar Codeauschnitte:

Delphi-Quellcode:
procedure TfDokAnzeige.trackZoomChange(Sender: TObject);
var
  ZoomFac : OLEVariant;

const
  OLECMDID_OPTICAL_ZOOM = 63;

begin
  timer1.Enabled := False;
  lbZoom.Caption := 'Zoom ' + IntToStr(trackZoom.Position) + '%';
  try
    If trackZoom.Position = WebBrowser1.OleObject.Document.ParentWindow.Screen.deviceXDPI * 100 / WebBrowser1.OleObject.Document.ParentWindow.Screen.logicalXDPI then
    begin
      panZoom.Visible := True;
      timer1.Enabled := True;
      Exit;
    end;
  except
  end;

  try
    ZoomFac := trackZoom.Position;
    WebBrowser1.ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, ZoomFac);
    panZoom.Visible := True;
    timer1.Enabled := True;
  except
    panZoom.Visible := False;
  end;
end;

procedure TfDokAnzeige.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  trackZoomChange(trackZoom);
end;

procedure TfDokAnzeige.Timer1Timer(Sender: TObject);
begin
  try
    trackZoom.Position := WebBrowser1.OleObject.Document.ParentWindow.Screen.deviceXDPI * 100 / WebBrowser1.OleObject.Document.ParentWindow.Screen.logicalXDPI;
  except
  end;
end;
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#3

AW: TWebBrowser-Control und Einstellmöglichkeiten

  Alt 17. Mär 2016, 14:02
Das ist ein richtiger IE. Eventuell ist nur das HTML-Dokument ungünstig?
Du musst im HTMLHeader spezifizieren, für welchen IE (9, 10, 11,..., Aktuellster) die Seite designt ist. ANsonsten verfällt der in nen Quirkmodus(IE7 iirc). Es kann sein, dass der Standalone IE den Quirkmodus unter bestimmten umständen unterdrückt.
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TWebBrowser-Control und Einstellmöglichkeiten

  Alt 17. Mär 2016, 14:52
Das ist ein richtiger IE. Eventuell ist nur das HTML-Dokument ungünstig?
Du musst im HTMLHeader spezifizieren, für welchen IE (9, 10, 11,..., Aktuellster) die Seite designt ist. ANsonsten verfällt der in nen Quirkmodus(IE7 iirc). Es kann sein, dass der Standalone IE den Quirkmodus unter bestimmten umständen unterdrückt.
Über Registry-Key soll der IE 11 als IE11 laufen.
Und der Doctype wäre in diesem Fall <!DOCTYPE html>
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#5

AW: TWebBrowser-Control und Einstellmöglichkeiten

  Alt 17. Mär 2016, 15:00
A) Von dem RegistryKey lässt man tunlichst die Finger. Globals rumgehacke ist immer müll.
B) An den anfang des Heads braucht es folgende Metainfos:
Code:
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
</head>
EDGE bedeutet hierbei "Höchste verfügbare". Wenns konsistent sein muss kann man sich auch eine spezifische version raussuchen.

Optional sind auch folgende nicht verkehrt:
Code:
<meta charset="utf-8"/>
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TWebBrowser-Control und Einstellmöglichkeiten

  Alt 18. Mär 2016, 15:39
(Haupt-)PRoblem gelöst.

Der TWebbrowser läuft in einem Legacy-Modus in denen er meint keine Touch-Events zu können er sie aber doch ausführt.
Mit dem Registry-Key

https://msdn.microsoft.com/en-us/lib...x#legacy_input

kann man das für die eigene Anwendung deaktivieren.

Schwubs verhält sich der IE11 im TWebBrowser wirklich wie ein IE11 und nicht wie eine undefinierbare Mischung aus IE7 und IE11.
Windows Vista - Eine neue Erfahrung in Fehlern.

Geändert von Bernhard Geyer (18. Mär 2016 um 15:44 Uhr)
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.164 Beiträge
 
Delphi 10 Seattle Professional
 
#7

AW: TWebBrowser-Control und Einstellmöglichkeiten

  Alt 29. Mai 2018, 12:50
(Haupt-)PRoblem gelöst.
Ist zwar schon etwas länger her.. Konnten Sie aber auch das zweite Problem mit der High DPI lösen?

Stehe gerade vor dem gleichen Problem. Ich muss eine Google Maps Karte im TWebBrowser anzeigen. Im IE wird die Karte und die Steuerungsobjekte richtig skaliert für High DPI, im TWebBrowser gar nicht.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz