Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Webview2 für D2007 (https://www.delphipraxis.net/209780-webview2-fuer-d2007.html)

Gruber_Hans_12345 20. Jan 2022 12:35

Delphi-Version: 2007

Webview2 für D2007
 
Gibt es eigentlich eine Möglichkeit WebView2 (also die Edge Variante) auch in einem Projekt von Delphi 2007 noch zum laufen zu bringen?

eventuell mittles Drittanbieter oder so?

Bernhard Geyer 20. Jan 2022 13:24

AW: Webview2 für D2007
 
TMS müsst was haben: https://www.tmssoftware.com/site/edgechromium.asp

Falls Chromium direkt reicht -> https://github.com/salvadordf/CEF4Delphi

Glücklicherweise war bei uns nur der Update Delphi 10.2 auf 10.4 nötig und konnte damit
den Kauf der 3th-Party-Komponenten vermeiden und auch von den Einschränkungen des direkten Chromium weg kommen.

Gruber_Hans_12345 20. Jan 2022 14:06

AW: Webview2 für D2007
 
bei TMS ist das ja in diesem FNC UI Pack drinnen, das erst ab Delphi XE7 läuft,

Bernhard Geyer 20. Jan 2022 14:54

AW: Webview2 für D2007
 
Dann halt CEF4Delphi.

Ansonsten wäre mal ein Update Delphi anzusetzen.
D2007 unterstützen immer weniger Hersteller.

Mavarik 21. Jan 2022 00:43

AW: Webview2 für D2007
 
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1500931)
Gibt es eigentlich eine Möglichkeit WebView2 (also die Edge Variante) auch in einem Projekt von Delphi 2007 noch zum laufen zu bringen?

eventuell mittles Drittanbieter oder so?

Also ich hab es einfach so gemacht:
Ich compiliere mir eine DLL mit XE-11 und die verwende ich mit D2007.

Mavarik

Gruber_Hans_12345 3. Jun 2022 13:15

AW: Webview2 für D2007
 
Zitat:

Zitat von Mavarik (Beitrag 1500975)
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1500931)
Gibt es eigentlich eine Möglichkeit WebView2 (also die Edge Variante) auch in einem Projekt von Delphi 2007 noch zum laufen zu bringen?

eventuell mittles Drittanbieter oder so?

Also ich hab es einfach so gemacht:
Ich compiliere mir eine DLL mit XE-11 und die verwende ich mit D2007.

Mavarik

Hi Mavarik, wäre es möglich das du kurz mal schreibst wie du es dann aus der DLL ansprichst?
Ich werde es auch so machen das ich eine DLL mit Delphi 11 mache die ich dann im D2007 verwende.

Mavarik 3. Jun 2022 14:34

AW: Webview2 für D2007
 
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1506725)
Hi Mavarik, wäre es möglich das du kurz mal schreibst wie du es dann aus der DLL ansprichst?
Ich werde es auch so machen das ich eine DLL mit Delphi 11 mache die ich dann im D2007 verwende.

Gerne, aber welche Info brauchst Du?

Mavarik

KodeZwerg 3. Jun 2022 18:07

AW: Webview2 für D2007
 
Ich habe noch nicht WebView4Delphi getestet aber was ich so lese sollte es kompatibel sein ab Delphi 2009 (UniCode).

Viel Spaß und Erfolg beim testen!

Mavarik 4. Jun 2022 09:47

AW: Webview2 für D2007
 
Zitat:

Zitat von KodeZwerg (Beitrag 1506734)
Delphi 2009 (UniCode).

Hat eigentlich jemand D2009...

Das Problem ist ja D2007.

Gruber_Hans_12345 8. Jun 2022 07:17

AW: Webview2 für D2007
 
Zitat:

Zitat von Mavarik (Beitrag 1506727)
Gerne, aber welche Info brauchst Du?
Mavarik

Wo hast du die Schnittstelle angesetzt? also schleust du alle Events vom TEdgeBrowser durch?
Zum erzeugen vom TEdgeBrowser gibst vermutlich nur einen Handel dann an die DLL an oder?

Eine Frage noch an alle - ist es möglich die ganzen Daten sprich Files aus einer Ressource zu laden?
Die indes.html, also das File das ich anzeigen will, ist ja kein PRoblem, das lade ich schon aus dem Speicher, aber ich würde gerne dazu auch alle CSS + JS auch die per link drinnen sind aus dem Speicher laden können.
Habe aber kein Event gefunden das man dazu hernehmen könnte?

himitsu 8. Jun 2022 08:37

AW: Webview2 für D2007
 
https://docs.microsoft.com/en-us/pre...-apis/jj710218
res protocoll -> res://sFile/sID bzw. res://sFile/sType/sID

Mavarik 8. Jun 2022 08:59

AW: Webview2 für D2007
 
Zitat:

Zitat von Gruber_Hans_12345 (Beitrag 1506993)
Zitat:

Zitat von Mavarik (Beitrag 1506727)
Gerne, aber welche Info brauchst Du?
Mavarik

Wo hast du die Schnittstelle angesetzt? also schleust du alle Events vom TEdgeBrowser durch?
Zum erzeugen vom TEdgeBrowser gibst vermutlich nur einen Handel dann an die DLL an oder?

Eine Frage noch an alle - ist es möglich die ganzen Daten sprich Files aus einer Ressource zu laden?
Die indes.html, also das File das ich anzeigen will, ist ja kein PRoblem, das lade ich schon aus dem Speicher, aber ich würde gerne dazu auch alle CSS + JS auch die per link drinnen sind aus dem Speicher laden können.
Habe aber kein Event gefunden das man dazu hernehmen könnte?

Ich hab das ganze Fenster in einer XE 11.1 DLL

Gruber_Hans_12345 8. Jun 2022 10:58

AW: Webview2 für D2007
 
hmmm ein kleines Problem habe ich noch.

Ich habe zwei ansätze wie ich die hauptseite (index.html) reinbekomme.

Folgende geht zwar sehr schnell aber dafür bekomme ich bei gewissen sachen einen CORS verletzug.
Delphi-Quellcode:
  source := TStringList.Create;
  source.LoadFromFile('source\index.html');
  EdgeBrowser1.NavigateToString(source.TExt);
  source.Free;
wenn ich mit folgenden das mache

Delphi-Quellcode:
  EdgeBrowser1.AddWebResourceRequestedFilter('*', COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL);
  EdgeBrowser1.Navigate('https://app/source/index.html');
Dann funktionieren zwar die AJAX aufrufe (keine CORS Verletzung mehr) aber dafür habe ich bei der ersten Seite immer ein Delay von ca 2 Sekunden (die ich beim ersten Code nicht habe)

Ok habs geschafft, konnte das CORS umgehben, indem ich die Access-Contro-Allow-* Header setze beim schicken nun funktioniert es mit dem NavigateToString auch

Gruber_Hans_12345 8. Jun 2022 18:27

AW: Webview2 für D2007
 
hmmm eine Frage wegen dem IStream noch

Im Moment mach ich das so:
Delphi-Quellcode:
iStr   := TStreamAdapter.Create(fileSt, soOwned) as IStream;
      EdgeBrowser1.EnvironmentInterface.CreateWebResourceResponse(iStr, 200, 'OK', PWideChar(
          'content-type: '+contentTyp+#13#10
          ), response);
      Args.ArgsInterface.Set_Response(response);
      iStr := nil;
Dadruch wird der TFileStream (fileSt) und der TStreamAdapter zwar freigegeben, aber erst beim schließen des Programmes, bzw wenn ich beim TEdgeBrowser einen reload oder so mache.
Ansonsten sind die 7 TFileStream + TStreamAdapter die da drinnen erzeugt werden permanent in use.

Ist ja nicht sinn und zweck oder?

himitsu 8. Jun 2022 20:20

AW: Webview2 für D2007
 
Zitat:

Delphi-Quellcode:
LoadFromFile('source\...

NEIN.

Niemals mit relativen Pfaden arbeiten.

Delphi-Quellcode:
ExtractFilePath(Application.ExeName)
oder
Delphi-Quellcode:
ExtractFilePath(ParamStr(0))
und Pfade am Besten nicht manuell, sondern mit Delphi-Referenz durchsuchenTPath.Combine zusammenklöppeln.


Einfachers Beispiel:
man nehme einen TFileOpenDialog oder SaveDialog
und freue sich, dass der standardmäßig das Arbeitsverzeichnis ändert.

Oder das Programm wird aus einem anderen Pfad gestartet und das Arbeitsverzeichnis ist schon von Beginn an nicht das Gleiche, wie das Programmverzeichnis.

Gruber_Hans_12345 10. Jun 2022 06:35

AW: Webview2 für D2007
 
Ja danke - aber das war nur zum testen eine Version, ich lade alle Files aus den Resourcen raus.

Nur das mit dem IStream, die er nur irgendwann mal freigibt bleibt trotzdem noch


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 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