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 auf TForm -- KeyPress? (https://www.delphipraxis.net/156311-twebbrowser-auf-tform-keypress.html)

HJay 27. Nov 2010 15:42

TWebBrowser auf TForm -- KeyPress?
 
Ich habe eine TForm mit einem TPanel mit ein paar TSpeedButtons und einen TWebBrowser mit TWebBrowser.Align = alClient, der den Rest des Fenster einnimmt.

Ich habe TForm.KeyPreview = True gesetzt, aber FormKeyPress erhält trotzdem keine Tastenanschläge. Verhindert dies der Webbrowser? (Auch wenn ich ein TEdit zusätzlich aufnehme, funktioniert KeyPreview nur, wenn der Edit den Focus hat.)

Was kann man machen? Ich würde sehr gerne wie in allen anderen meinen Programmfenstern ein Schließen des TForm durch Drücken von ESCAPE ermöglichen.

toms 27. Nov 2010 16:42

AW: TWebBrowser auf TForm -- KeyPress?
 
Setze eine TApplicationEvents Komponente auf deine Form. Im OnMessage Ereignis kannst du dann ESC etc. abfangen.

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.wParam = VK_ESCAPE) and (Msg.message = WM_KEYDOWN) then
  begin
    // ESCAPE
  end;
end;

HJay 27. Nov 2010 16:49

AW: TWebBrowser auf TForm -- KeyPress?
 
Wow, gewusst wie. Vielen Dank, klappt auf Anhieb.

Ich habe zuvor noch nie TApplicationEvents gebraucht. Hat das irgendwelche anderen Auswirkungen auf Events oder ist das "ungefährlich" ohne Nebenwirkungen?

SirThornberry 27. Nov 2010 18:03

AW: TWebBrowser auf TForm -- KeyPress?
 
das TApplication-Object bietet die Events OnMessage etc. an. Da damit aber immer nur einer dieses Events verwenden kann ist es besser TApplication-Events zu nutzen da man dann keine Angst haben muss das eine andere Komponenten einem das Event klaut.
Nebenwirkungen hat die Verwendung keine sofern du in den Events nichts schlimmes anstellst.
Grund dafür das dein KeyPreview bei TWebbrowser keinen Effekt hat ist, dass es kein Teil der Delphi VCL ist und sich somit nicht darum kümmert ob KeyPreview in irgend einem Formular aktiv ist.

HJay 27. Nov 2010 20:28

AW: TWebBrowser auf TForm -- KeyPress?
 
Danke für die Erläuterung. Die VCL-Events sind natürlich übersichtlich, während ich mich mit Messages nicht auskenne. So oder so, ist das erste Mal, dass KeyPreview nicht seinen Dienst getan hat und die obige Lösung hat perfekt funktioniert.

TWebBrowser ist kein VCL? Hatte ich noch gar nicht gemerkt. Auch danke für diesen Hinweis! Leider ist in D6 das gesamte Internet noch ziemlich sparsam bestückt, aber man kommt halbwegs zurecht. Seltsam, dass TWebbroser nicht auch zur VCL gehört, oder?


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