Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   TWebbrowser: Eingabe in "Edit"-Feld wird an TForm weitergegeben (https://www.delphipraxis.net/198545-twebbrowser-eingabe-edit-feld-wird-tform-weitergegeben.html)

hoika 12. Nov 2018 16:48

TWebbrowser: Eingabe in "Edit"-Feld wird an TForm weitergegeben
 
Hallo,
ja, für eine exaktere Fehlerbeschreibung fehlt oben der Platz ;)

Also, ich haben ein PageControl mit einem TabSheet, einem Panel (alClient) und dann endlich einen TWebBrowser.
Der WebBrowser zeigt eine Seite an mit einem Formularfeld (ja, es ist kein Edit, ich weiss).
auf dem Form ist ein Hilfebutton (TBitBtn mit &Hilfe als Caption).

Drücke ich jetzt im WebBrowser H, wird der HilfeButton aufgerufen.

Das H steht auch nicht im WebBrowser-Edit drin.

Benutze ich die Zwischenablage zur "Eingabe", klappt es.
Packe ich einen TEdit (jetzt wirklich) auf das TabSheet mit drauf, geht es auch.

Form.KeyPreview ist True

Was ist denn hier kaputt?

Der schöne Günther 12. Nov 2018 16:57

AW: TWebbrowser: Eingabe in "Edit"-Feld wird an TForm weitergegeben
 
Ich wünschte ich könnte helfen (habe so etwas mit diesen komischen Unterstreichungen noch nie gemacht), aber zumindest kann ich das nachvollziehen.

Der Stack ist bspw

Code:
Unit21.TForm1.BitBtn1Click($31F11D0)
Vcl.Controls.TControl.Click
Vcl.StdCtrls.TCustomButton.Click
Vcl.Buttons.TBitBtn.Click
Vcl.StdCtrls.TCustomButton.CMDialogChar((1702664, (), 62940, 25, (), 1701332, (), 6177856))
Vcl.Controls.TControl.WndProc((45062, 104, 2293761, 0, 104, 0, (), 1, 35, (), 0, 0, ()))
Vcl.Controls.TWinControl.WndProc((45062, 104, 2293761, 0, 104, 0, (), 1, 35, (), 0, 0, ()))
Vcl.StdCtrls.TButtonControl.WndProc((45062, 104, 2293761, 0, 104, 0, (), 1, 35, (), 0, 0, ()))
Vcl.Controls.TWinControl.Broadcast((kein Wert))
Vcl.Controls.TWinControl.CMDialogChar(???)
Vcl.Controls.TControl.WndProc((45062, 104, 2293761, 0, 104, 0, (), 1, 35, (), 0, 0, ()))
Vcl.Controls.TWinControl.WndProc((45062, 104, 2293761, 0, 104, 0, (), 1, 35, (), 0, 0, ()))
Vcl.Controls.TWinControl.Broadcast((kein Wert))
Vcl.Controls.TWinControl.CMDialogChar(???)
Vcl.Controls.TControl.WndProc((45062, 104, 2293761, 0, 104, 0, (), 1, 35, (), 0, 0, ()))
Vcl.Controls.TWinControl.WndProc((45062, 104, 2293761, 0, 104, 0, (), 1, 35, (), 0, 0, ()))
Vcl.Forms.TCustomForm.WndProc((45062, 104, 2293761, 0, 104, 0, (), 1, 35, (), 0, 0, ()))
Vcl.Controls.TControl.Perform(???,???,2293761)
Vcl.Controls.TWinControl.CNChar((48386, (), 104, 0, (), 2293761, (), 1))
Vcl.Controls.TControl.WndProc((48386, 104, 2293761, 1, 104, 0, (), 1, 35, (), 1, 0, ()))
Vcl.Controls.TWinControl.WndProc((48386, 104, 2293761, 1, 104, 0, (), 1, 35, (), 1, 0, ()))
Vcl.OleCtrls.TOleControl.WndProc((48386, 104, 2293761, 1, 104, 0, (), 1, 35, (), 1, 0, ()))
Vcl.Controls.TWinControl.MainWndProc(???)
System.Classes.StdWndProc(3080778,48386,104,2293761)
Vcl.Forms.TApplication.IsKeyMsg(???)
:0052e375 TButtonControl.WndProc + $71
Ich denke mal das Problem ist irgendwo dass der WebBrowser an sich keinen Fokus hat bzw. ihn nicht von den Buttons dort wegnimmt.

Delphi.Narium 12. Nov 2018 17:37

AW: TWebbrowser: Eingabe in "Edit"-Feld wird an TForm weitergegeben
 
Och, das Problem kenne ich schon lange.

Wenn man im TWebBrowser was in ein Formular eingeben will, reagieren (statt die Eingabe ins Formular zu übernehmen) alle eventuell irgendwie im Programm enthaltenen Shortcuts, quasi so, als würde man die ALT-Taste festhalten und dann was eingeben, damit kann man zwar ggfls. ein Programm recht gut steuern, aber keine Eingaben in 'nem Formular im TWebBrowser machen.

Abhilfe?

Keine Ahnung, im Laufe der letzten Jahre keine gefunden :-(

(Die ALT+Taste+Reaktion tritt auch auf, wenn man keine & in den Captions nutzt, dann werden halt ggfls. die von Windows "automatisch gewürfelten" ShortCuts "genutzt".)

Der schöne Günther 12. Nov 2018 17:47

AW: TWebbrowser: Eingabe in "Edit"-Feld wird an TForm weitergegeben
 
Und was ist hiermit?

https://stackoverflow.com/q/2602239/2298252

hoika 12. Nov 2018 19:17

AW: TWebbrowser: Eingabe in "Edit"-Feld wird an TForm weitergegeben
 
Hallo,
das in stackoverflow scheint genau das zu sein.

Ich versuche gerade die 2. Lösung, um den Browser nicht ableiten zu müssen.
Klappt aber leider nicht.

Der Class Name (Internet Explorer_Server) heisst auf jeden Fall auch schon mal wirklich so.

hoika 13. Nov 2018 08:55

AW: TWebbrowser: Eingabe in "Edit"-Feld wird an TForm weitergegeben
 
Hallo,
ich habe jetzt Variante 2 genommen

Delphi-Quellcode:
uses
  Windows, Messages, Controls, StdCtrls, ExtCtrls, SHDocVw;

type
  TWebBrowser2 = class(TWebBrowser)
    procedure CNChar(var Message: TWMChar); message CN_CHAR;
  end;

...

procedure TWebBrowser2.CNChar(var Message: TWMChar);
begin
  Message.Result := 0;
end;
Beim dynamischen Erzeugen auf einem Panel muss man noch etwas rumtricksen

Delphi-Quellcode:
 
WebBrowser:= TWebBrowser2.Create(Panel1);
WebBrowser.Align:= alClient;
TWinControl(WebBrowser).Parent := Panel1; // Parent is Read-Only
Aber ansonsten läuft es wie gewünscht.

Vielen Dank!


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