Einzelnen Beitrag anzeigen

BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: event bei tastendruck - aber wie...

  Alt 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
Angehängte Dateien
Dateityp: rar tastendruck_abfangen_110.rar (173,1 KB, 5x aufgerufen)
2. Account Sero
  Mit Zitat antworten Zitat