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/)
-   -   Delphi Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT (https://www.delphipraxis.net/163809-wenn-twebbrowser-eingabe-shortcutaufruf-ohne-alt.html)

Koolance 17. Okt 2011 14:50

Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe gerade ein sehr merkwürdiges Problem mit Delphi 6. Ich habe eine Pagecontrol mit mehreren Tabs wobei jedes Tab mit einer Zahl als Shotcut versehen ist.

Auf einem Tab liegt ein TWebbrowser, und sobal ich in dem TWebbrowser eine Zahl drücke wird ein Shortcut aktiviert so als hätte ich z.B. ALT+1 gedrückt.

Das ganze lässt sich nicht mit dem Keydown Ereigniss von TForm abfangen.

Zur Veranschaulichung habe ich eine kleine Beispielanwendung geschrieben um das ganze zu veranschaulichen ("Google" drücken-> Dann in der Eingaben "1" oder "2").

Ein möglicher Lösungsansatz wäre ein Programm zu schreiben das über die Wingui alle ALT abfängt, aber zum einen habe ich noch keine Ahnung wie das gehen soll, zum anderen wären aber wahrscheinlich auch andere Windowsprogramme betroffen.

Thom 17. Okt 2011 15:36

AW: Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
Hmm...
Ich habe gerade Deine compilierte Anwendung getestet und muß feststellen, daß die Umschaltung zwischen den Tabs sowohl mit als auch ohne Tab-Taste funktioniert. Ich benutze XP und den IE 8.

Koolance 17. Okt 2011 15:40

AW: Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
Danke fürs angucken.
Ich weiß leider nicht ganz worauf du hinaus willst.

Mein Problem ist das wenn z.B. im Google Edit eine "1" eingegeben wird er auf das Tab&1 springt so also ob ich ALT+1 gedrückt hätte.

Ich benutze XP und IE 7.

Koolance 17. Okt 2011 15:45

AW: Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
Zusätzliche Info.
Ich habe das ganze mal mit Delphi 2007 kompiliert und habe das gleich Problem.

Thom 17. Okt 2011 19:01

AW: Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
Sorry: Das war ein Mißverständnis. Ich dachte, dieses Verhalten sei so von Dir gewollt.

Ja - das ist tatsächlich etwas merkwürdig. Das Problem tritt übrigens auch mit Delphi XE auf. Die Ursache liegt offenbar darin, daß in TCustomTabControl.CMDialogChar nicht getestet wird, ob die Alt-Taste betätigt ist, sondern darauf vertraut wird, daß sich Windows schon etwas dabei denkt, wenn es diese Nachricht sendet. Und genau das geht hier schief.

Ich habe mal etwas getestet und eine Lösung gefunden (funktioniert zumindest bei mir):
Delphi-Quellcode:
type
  TPageControl = class(ComCtrls.TPageControl)
  private
    procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;
  end;

  TForm1 = class(TForm)
    PageControl1: TPageControl;
    [...]
  end;

procedure TPageControl.CMDialogChar(var Message: TCMDialogChar);
begin
  if GetKeyState(VK_MENU) and $8000<>0
    then inherited;
end;

Bummi 17. Okt 2011 22:18

AW: Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
Ein guter Hinweis für den Spezialfall, allerdings reagieren (alle) Controls mit & Shortkey so, also auch Buttons auf dem Form....

Thom 17. Okt 2011 23:45

AW: Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
Ups - das hatte ich gar nicht getestet. Also müßte man für jede verwendete Standard-Komponente eine Ableitung schreiben. Viel Spaß... :pale:

Koolance 18. Okt 2011 07:23

AW: Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
Vielen Dank, auf die Idee wäre ich nicht gekommen.

Ich habe zum test auch mal einen Shortcut auf einen Button gelegt und der ist nicht betroffen. Daher super Lösung für mein gesamtes Problem (ich war schon kurz davor die Shortcuts vor dem öffnen des Webbrowsers zu entfernen).

Bummi 18. Okt 2011 10:11

AW: Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
@Koolance
interessant, bei mir(XE/2010) ist ein Button mit Caption Button&4 ebenfalls betroffen ...

Koolance 18. Okt 2011 12:45

AW: Wenn TWebbrowser eingabe Shortcutaufruf ohne ALT
 
Es ist etwas komisch, in meiner Beispielanwendung wird der Browser nicht noch einmal neu geöffnet wenn "Go&ogle" und ich ein "o" eingebe. In meiner richtigen Anwendung lag noch irgendwo ein Button mit einem "&x" der dann doch betroffen war.


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