![]() |
Tastaturverarbeitungsereignis(Taste und Dauer des Drucks)
Hallo erstmal!
Nach langem lesen in verschiedenen Foren und stöbern im Internet wende ich mich jetzt mal an euch...
Delphi-Quellcode:
Nun meine Fragen:procedure TfrmTitel.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Tastendruck_Anfang := GetTickCount; Schiffsaktionen(Key,frmTitel,Shift); // SCHIFFFUNKTIONEN.PAS // Hier werden die Keys weiterverarbeitet , irrelevant hoffe ich end; {********************************************************************************** **********************************************************************************} procedure TfrmTitel.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Tastendruck_Ende := GetTickCount; Differenz_Tastendruck := ((Tastendruck_Ende - Tastendruck_Anfang) div 1000) ; edtTastenDruckSek.Text := IntToStr(Differenz_Tastendruck); end; {********************************************************************************** **********************************************************************************} 1.Wieso kommt in dem Editfeld immer 0 raus? 2.Hat jemand eine bessere Idee wie man das mit der Zeitmessung machen kann? Am besten einfacher... Hoffe ihr könnt mir helfen.Danke im voraus für den Aufwand und die Mühe. |
Re: Tastaturverarbeitungsereignis(Taste und Dauer des Druck
Herzlich Willkommen in der Delphi-PRAXiS.
Da du nur vollendete Sekunden berechnest, ist doch Null als Ergebnis durchaus plausibel, oder? Du musst wissen, dass in Anhängigkeit von den Einstellungen deines keyboard controller das KeyDown Ereignis auch beim auto repeat ausgelöst wird. Schau mal in deinem BIOS nach den eingestellten Zeiten. Freundliche Grüße vom marabu |
Re: Tastaturverarbeitungsereignis(Taste und Dauer des Druck
Erstmal danke für die Antwort. Nur leider weiss ich nicht wie ich das Problem sonst noch gut lösen kann.Ich brauche eine Möglichkeit wie beim Parameter Shift ... Mit Shift halten geht das ja , aber ich möchte das wenn man Space gedrückt hält sich ein Balken am unteren Rand des Bildschirmes auflädt (Benutze dafür eine Fremdkomponente für den Balken). Wäre sehr hilfreich wenn mir einer sagen könnte, wie ich das bewerkstelligen kann ohne GetTickCount oder wenn mit wie... Mit der Methode habe ich ja keinen Erfolg.
|
Re: Tastaturverarbeitungsereignis(Taste und Dauer des Druck
Hallo,
Zitat:
Du solltest die Auswertung in Millisekunden machen (nimm das div weg!) Edit: hier mal ein Beispiel...
Delphi-Quellcode:
MfG
:
private { Private-Deklarationen } FStartZeit:Cardinal; FGedrueckt:boolean; : procedure TForm.FormCreate(Sender: TObject); begin FGedrueckt:=false; end; procedure TForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if not FGedrueckt then begin FGedrueckt:=true; FStartZeit:=GetTickCount; end; end; procedure TForm.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if FGedrueckt then begin showmessage(inttostr((GetTickCount - FStartZeit))); FGedrueckt:=false; end; end; Thorsten |
Re: Tastaturverarbeitungsereignis(Taste und Dauer des Druck
Hi,
ich würde das ähnlich machen wie Thorsten. Den Zustand GEDRUECKT brauche ich nicht, da er aus der Startzeit abgeleitet werden kann.
Delphi-Quellcode:
marabu
procedure TDemoForm.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Key = VK_SPACE then begin ResetBar; Key := 0; end; end; procedure TDemoForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_SPACE then if tcStart = 0 then tcStart := GetTickCount else ProgressBar(GetTickCount - tcStart); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 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 by Thomas Breitkreuz