Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi F10 abfangen (https://www.delphipraxis.net/2879-f10-abfangen.html)

janjan 11. Feb 2003 13:53


F10 abfangen
 
ich fange in meinem programm die tastendrücke folgendermaßen ab:

Delphi-Quellcode:
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.
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?

sakura 11. Feb 2003 13:57

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:...

Luckie 11. Feb 2003 14:03

Stimmt damit wird das Menü aktiviert.

Aber du machst es sowieso etwas umstaändlich:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F10 then
    ShowMessage('Hello world');
end;
Eventuell noch KeyPreview auf TRUE stellen.

janjan 11. Feb 2003 14:14

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.

Luckie 11. Feb 2003 14:17

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.

janjan 11. Feb 2003 14:26

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.

Luckie 11. Feb 2003 14:31

Einmal F10 Fentermenü aktiviert, zweimal F10 Fenstermenü wieder deaktiviert.

sakura 11. Feb 2003 14:32

Ändere mal Deine Procedure
Delphi-Quellcode:
procedure TForm1.WMKey(var Message: TWMKey);
begin
  form1.Caption:=inttostr(message.CharCode);
end;
nach
Code:
procedure TForm1.WMKey(var Message: TWMKey);
begin
  form1.Caption:=inttostr(message.CharCode);
  [color=#ff0008]inherited;[/color]
end;

janjan 11. Feb 2003 14:32

ups

Luckie 11. Feb 2003 14:33

Nimm eine andere Taste oder probier sakuras Code aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:25 Uhr.
Seite 1 von 2  1 2      

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