AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Tastaturverarbeitungsereignis(Taste und Dauer des Drucks)
Thema durchsuchen
Ansicht
Themen-Optionen

Tastaturverarbeitungsereignis(Taste und Dauer des Drucks)

Ein Thema von Preddy2005 · begonnen am 22. Jan 2006 · letzter Beitrag vom 24. Jan 2006
Antwort Antwort
Preddy2005

Registriert seit: 27. Nov 2005
Ort: Mettmann
38 Beiträge
 
#1

Tastaturverarbeitungsereignis(Taste und Dauer des Drucks)

  Alt 22. Jan 2006, 22:03
Hallo erstmal!

Nach langem lesen in verschiedenen Foren und stöbern im Internet wende ich mich jetzt mal an euch...

Delphi-Quellcode:

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;

{**********************************************************************************
**********************************************************************************}
Nun meine Fragen:

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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Tastaturverarbeitungsereignis(Taste und Dauer des Druck

  Alt 22. Jan 2006, 22:19
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
  Mit Zitat antworten Zitat
Preddy2005

Registriert seit: 27. Nov 2005
Ort: Mettmann
38 Beiträge
 
#3

Re: Tastaturverarbeitungsereignis(Taste und Dauer des Druck

  Alt 23. Jan 2006, 21:47
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.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Tastaturverarbeitungsereignis(Taste und Dauer des Druck

  Alt 23. Jan 2006, 21:56
Hallo,

Zitat von Preddy2005:
Differenz_Tastendruck := ((Tastendruck_Ende - Tastendruck_Anfang) div 1000) ;
warum teilst du ganzzahlig durch 1000.
Du solltest die Auswertung in Millisekunden machen (nimm das div weg!)

Edit: hier mal ein Beispiel...

Delphi-Quellcode:
  :
  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;
MfG
Thorsten
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Tastaturverarbeitungsereignis(Taste und Dauer des Druck

  Alt 24. Jan 2006, 12:32
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:
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;
marabu
  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 09:01 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