![]() |
event bei tastendruck - aber wie...
hi jungs,
(nein ich will nicht sowas wie einen key-logger oder sone scheiße programmieren! mein programm kann auch nicht zu sowas in der art verwendet werden....) ich hab jetzt unter anderem das problem dass ich alle gedrückten zeichentasten ( a,b,c,+,!,-, usw) gerne durch eine art 'kontrolle' laufen lassen würde. soll heißen der user tipp etwas in ein editfeld und bekommt bei jedem tastendruck das zeichen der gedrückten taste nocheinmal in einem kleinen label angezeigt. zusätzlich soll noch ein panel die farbe rot oder grün annehmen wenn bestimmt sonderzeichen gedrückt werden. ich habe schon sowas wie OnKeyDown und die zeichen tabelle (VK_A,VK_B usw) gefunden aber weiß nicht genau wie ich das ganze zusammensetzen soll. (eigentlich müsste nur bei 4-5 sonderzeichen das label rot werden und das kann man ja extra programmieren..) ich suche also sowas wie ne IF-schleife mit mehreren eingangsvariablen (also A-Z sowie a-z plus einige sonderzeichen -> label grün. und halt anzeige des tastensymbols im label) danke im voraus |
Re: event bei tastendruck - aber wie...
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Hoffe, dass hilft dir ein wenig. wie gesagt, geht sicherlich besser, aber es funktioniert halt. Müsstest du dann einfach in dein Edit einarbeiten.
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. MfG BAMatze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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