![]() |
F10 abfangen
ich fange in meinem programm die tastendrücke folgendermaßen ab:
Delphi-Quellcode:
das klappt soweit bei allen tasten die ich brauche, nur F10 verweigert die zusammenarbeit. normalerweise kommt man mit F10 in den meisten programmen ins menü, in meinem programm gibts aber kein menü, was mach ich falsch?
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Memo1: TMemo; procedure WMKey(var Message: TWMKey); message WM_KEYDOWN; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMKey(var Message: TWMKey); begin form1.Caption:=inttostr(message.CharCode); end; end. |
Starte mal das Programm ausserhalb der Delphi-Umgebung. Wahrscheinlich (hoffentlich) funktioniert es dann ohne Probleme. ;) Delphi hat einen global Hook auf der F10 Taste, da Deine App aber im Delphi-Debugger läuft, kann es zu "Interferenzen" kommen.
...:cat:... |
Stimmt damit wird das Menü aktiviert.
Aber du machst es sowieso etwas umstaändlich:
Delphi-Quellcode:
Eventuell noch KeyPreview auf TRUE stellen.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Key = VK_F10 then ShowMessage('Hello world'); end; |
danke für die antworten, aber so richtig klappts immer noch nicht.
@luckie: ich weiß das das umständlich ist, aber ich hatte das erst so gemacht wie du es vorgeschlagen hast. als das nicht klappte, hab ichs mit dem TWMKey probiert, leider mit dem selben ergebnis. wenn ich einmal F10 drücke muss ich eine andere taste zweimal drücken damit dieser erkannt wird :( ob Keypreview auf true oder false steht ist egal, bei beiden passiert das selbe. |
Weil F10 von Windows vorbelegt wird. Probier meinen Code mal mit F12 aus. Bei mir tut er es zu mindest ohne weiteres. Aus der IDe sogar mit F10.
|
hm, komisch:
-wenn ichs mit dem TWMKey mache, dann muss ich nach einmal F10 drücken eine andere taste zweimal drücken damit ich an deren wert komme. -wenn ich mit dem FormKeyDown mache, dann muss ich nach einmal F10 drücken nochmal F10 drücken um andere tasten abzufragen. |
Einmal F10 Fentermenü aktiviert, zweimal F10 Fenstermenü wieder deaktiviert.
|
Ändere mal Deine Procedure
Delphi-Quellcode:
nach
procedure TForm1.WMKey(var Message: TWMKey);
begin form1.Caption:=inttostr(message.CharCode); end;
Code:
procedure TForm1.WMKey(var Message: TWMKey);
begin form1.Caption:=inttostr(message.CharCode); [color=#ff0008]inherited;[/color] end; |
ups
|
Nimm eine andere Taste oder probier sakuras Code aus.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz