Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TWebBrowser mit Edge - Copy/Paste Clipboard (https://www.delphipraxis.net/213425-twebbrowser-mit-edge-copy-paste-clipboard.html)

looseleaf 27. Jul 2023 15:59

TWebBrowser mit Edge - Copy/Paste Clipboard
 
Liebe Gemeinde!

Delphi 11 macht mich ein bissl fertig.

Wir haben eine Funktion in unserem Programm, die aus HTML Dateien markierte Texte nehmen kann und die dann in der Kartei des aufgerufenen Klienten als bestimtme Eintrag verwendet. Das haben wir bis dato mit ExecWB(OLEMCDID_COPY...) erledigt, was ja mit Edge nicht mehr exsitiert.

Übersehe ich den Wald vor lauter Bäumen oder wie schaffe ich es, den markierten Text in die Zwischenablage zu schicken bzw. den gesamten Text zu markieren?

Danke fürs Augenöffnen
Stefan

mytbo 27. Jul 2023 16:59

AW: TWebBrowser mit Edge - Copy/Paste Clipboard
 
Zitat:

Zitat von looseleaf (Beitrag 1524971)
Übersehe ich den Wald vor lauter Bäumen oder wie schaffe ich es, den markierten Text in die Zwischenablage zu schicken bzw. den gesamten Text zu markieren?

Im Edge-Browser mit:
  • Markierten Text kopieren: Strg+C
  • Gesamten Text markieren und kopieren: Strg+A und dann Strg+C

Bis bald...
Thomas

Delphi.Narium 27. Jul 2023 17:14

AW: TWebBrowser mit Edge - Copy/Paste Clipboard
 
STRG+C, STRG+A und STRG+C ist ja gut und schön, aber wenn man das dann mal aus 'nem Programm heraus steuern will, wie man es beim TWebBrowser mit ExecWB(OLEMCDID_COPY...) erledigen konnte? Wie geht das beim Edge?

Edge throws error "WebBrowser1.ExecWB is not a function"

Klingt irgendwie umständlich und nicht sehr effektiv, aber eventuell ist's ja ein Ansatz.

looseleaf 27. Jul 2023 18:03

AW: TWebBrowser mit Edge - Copy/Paste Clipboard
 
Zitat:

Zitat von mytbo (Beitrag 1524972)
Zitat:

Zitat von looseleaf (Beitrag 1524971)
Übersehe ich den Wald vor lauter Bäumen oder wie schaffe ich es, den markierten Text in die Zwischenablage zu schicken bzw. den gesamten Text zu markieren?

Im Edge-Browser mit:
  • Markierten Text kopieren: Strg+C
  • Gesamten Text markieren und kopieren: Strg+A und dann Strg+C

Bis bald...
Thomas


Servus Thomas!
Hab mich wohl unklar ausgedrückt: Ich meine programmatisch (wir präfingieren den Text noch mit Metadaten und tragen das ganze dann in unsere Datenbank ein, da ist ein manuelles Copy/Paste nicht brauchbar).

Kleines Edit. TEdgeBrowser würde ExecuteScript() mitbringen, wo man ein document.execCommand('Copy') machen könnte. Aber TWebBrowser (wir haben Kunden mit Windows 7 und 8 im Einsatz) hat diese Schnittstelle ja nicht. Boah, es wird eklig.

Noch ein Edit: Wie komme ich an das das FEdge-Property von TWebBrowser ran?

Stefan

mytbo 27. Jul 2023 19:08

AW: TWebBrowser mit Edge - Copy/Paste Clipboard
 
Zitat:

Zitat von looseleaf (Beitrag 1524979)
Ich meine programmatisch (wir präfingieren den Text noch mit Metadaten und tragen das ganze dann in unsere Datenbank ein, da ist ein manuelles Copy/Paste nicht brauchbar).

Ich würde eine Schnittstelle mit den Funktionen definieren, die ihr zur weiteren Verarbeitung benötigt. Das Browser-Control je nach Betriebssystem per Sourcecode (TWebBrowser/TEdgeBrowser) erstellen. Wenn es nicht mit Bordmittel gelöst werden muss, dann solltest du dir WebView4Delphi ansehen. Folgendes sollte reichen:
Delphi-Quellcode:
Browser.SimulateEditingCommand(ecSelectAll);
Browser.SimulateEditingCommand(ecCopy);
Mit der Funktion RetrieveHTML und dem Event OnRetrieveHTMLCompleted bekommst du auch das komplette HTML. Javascript ist eine Alternative. Je nachdem, welche Kontrolle ihr über die Seiten beim Laden habt, auch durch direkte Injektion ins HTML.

Bis bald...
Thomas

looseleaf 3. Aug 2023 07:17

AW: TWebBrowser mit Edge - Copy/Paste Clipboard
 
Zitat:

Noch ein Edit: Wie komme ich an das das FEdge-Property von TWebBrowser ran?

Stefan
type TMyEdge=class(TWebBrowser)
private
function MyGetEdge: TEdgeBrowser;
public
property GetEdge: TEdgeBrowser read MyGetEdge;
end;

function TMyEdge.MyGetEdge: TEdgeBrowser;
begin
Result := inherited GetEdgeInterface;
end;


Und wenn AcviteEngine=Edge ist, dann hol ich mir den und mach ein
e.ExecuteScript('document.execCommand("Copy")');

looseleaf 3. Aug 2023 07:18

AW: TWebBrowser mit Edge - Copy/Paste Clipboard
 
Zitat:

Zitat von mytbo (Beitrag 1524981)
Zitat:

Zitat von looseleaf (Beitrag 1524979)
Ich meine programmatisch (wir präfingieren den Text noch mit Metadaten und tragen das ganze dann in unsere Datenbank ein, da ist ein manuelles Copy/Paste nicht brauchbar).

Ich würde eine Schnittstelle mit den Funktionen definieren, die ihr zur weiteren Verarbeitung benötigt. Das Browser-Control je nach Betriebssystem per Sourcecode (TWebBrowser/TEdgeBrowser) erstellen. Wenn es nicht mit Bordmittel gelöst werden muss, dann solltest du dir WebView4Delphi ansehen. Folgendes sollte reichen:
Delphi-Quellcode:
Browser.SimulateEditingCommand(ecSelectAll);
Browser.SimulateEditingCommand(ecCopy);
Mit der Funktion RetrieveHTML und dem Event OnRetrieveHTMLCompleted bekommst du auch das komplette HTML. Javascript ist eine Alternative. Je nachdem, welche Kontrolle ihr über die Seiten beim Laden habt, auch durch direkte Injektion ins HTML.

Bis bald...
Thomas

Danke für den Hinweis, ic hschau's mir an, falls noch Probleme auftreten!

Stefan


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