Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
Turbo Delphi für Win32
|
Re: event bei tastendruck - aber wie...
6. Jul 2009, 21:47
Hallo hab da mal vor kurzem etwas ähnliches programmiert. Ist zwar für eine Form geschrieben und reagiert nur auf die Pfeiltasten im speziellen aber im Prinzip könntest du das ganze so für dein Problem verwenden. Kannst dir ja mal anschauen. geb dir hier mal den Quellcode und im Anhang das Projekt.
Delphi-Quellcode:
unit Tastendruck;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const WMKeyDown = WM_KEYDOWN;
WMKeyUp = WM_KEYUP;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
private
procedure WMKeyDown( var Msn: TMessage); message WMKeyDown;
procedure WMKeyUp( var Msn: TMessage); message WMKeyUp;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//Prozedurebeschreibung:
//Wenn eine Taste gedrückt wird, dann wird überprüft, ob diese eine Pfeiltaste ist, wenn das der Fall ist
//erscheint das entsprechende Label, wenn es keine Pfeiltaste ist, erschein ein Label, in dem "falsche Taste" steht
procedure TForm1.WMKeyDown( var Msn: TMessage);
var Index: integer;
begin
//Aus Performancegründen habe ich natürlich hier schonmal den überprüfungsbereich eingeschränkt, gibt sicherlich bessere Wege
//ist aber ein möglicher Weg
Index := 36;
repeat
Index := Index+1;
until (GetasyncKeyState( Index) < 0) or ( Index >=41);
//Wenn die Taste im durchsuchten Berreich (Pfeiltasten) lag, dann Ausgabe über die Labels
if Index < 41 then
begin
case Index of
37: Label2.visible := true;
38: Label1.Visible := true;
39: Label4.Visible := true;
40: Label3.Visible := true;
end;
end
//Ansonsten "Falsche Taste"-Label
else Label5.Visible := true;
end;
//Procedurebeschreibung
//Wenn die Taste wieder losgelassen wird, verschwinden die Labels.
//Hier kann man auch noch verbessern, da wenn ich 2 Tasten nacheinander drück -> erscheinen 2 Labels, wenn ich eine los lasse, verschwinden beide
procedure TForm1.WMKeyUp( var Msn: TMessage);
begin
LAbel1.Visible := false;
LAbel2.Visible := false;
LAbel3.Visible := false;
LAbel4.Visible := false;
LAbel5.Visible := false;
end;
end.
Hoffe, dass hilft dir ein wenig. wie gesagt, geht sicherlich besser, aber es funktioniert halt. Müsstest du dann einfach in dein Edit einarbeiten.
MfG
BAMatze
2. Account Sero
|
|
Zitat
|