AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

event bei tastendruck - aber wie...

Ein Thema von .niklas · begonnen am 6. Jul 2009 · letzter Beitrag vom 6. Jul 2009
Antwort Antwort
.niklas

Registriert seit: 6. Jul 2009
5 Beiträge
 
#1

event bei tastendruck - aber wie...

  Alt 6. Jul 2009, 20:01
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
  Mit Zitat antworten Zitat
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, 20: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr.
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