![]() |
Timer gestartet....KeyDown abfragen
hiho,
ich habe in meinem programm eine timer-kompo....die wird irgendwann aktiviert, und timed so vor sich hin. nun will ich aber während dessen mit TForm1.Form1KeyDown afragen ob eine taste gedrückt wird. reicht das wenn ich die prozedur einfach nur erstelle (also ganz normal irgendwo im impementation-teil), oder muss ich die irgendwie in verbindung mit dem timer bringen?? danke schonmal ciao haegar |
Re: Timer gestartet....KeyDown abfragen
Hiho Haegar,
Zitat:
2. Verwende die Prozedur OnKexPress von Form1. Sobald eine Taste gedrückt wird, tritt dies ein. Mir ist nicht ganz Klar was Du mit dem Timer willst?! Grüsse, Daniel :hi: |
also der timer, läst ein object immer neu zeichnen, und die taste muss dauerhaft gedrükt werden. ich dachte das dauerhaft drücken is nur im KeyDown-ereigniss.
mal sehen obs klappt |
also ich hab KeyPreview (meintest du das, hab KeyPress nicht gefunden) auf true gesetzt, und in Ereignissbehandlungsroutine folgendes zu stehen
Delphi-Quellcode:
alles wunderbar, doch reagiert nix, das object(auto1) sollte sich demnach nach rechts bewegen, oder nach links, je nachdem!
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin if Key=CHR(VK_UP) then auto1.schneller(1.5); if Key=CHR(VK_DOWN) then auto1.bremsen(2); end; hier die timer-proz + anzeigen-proz.
Delphi-Quellcode:
is irgendwas nicht korrekt??
procedure anzeigen(auto:TAuto);
begin auto.zeichnen(Form1.Image1.Canvas); auto.x:=auto.x+Trunc(auto.v); auto.zeichnen(Form1.Image1.Canvas); end; procedure TForm1.TimerTimer(Sender: TObject); begin anzeigen(auto1); end; kann aber nicht sein, das der timer die ganze sache irgendwie "unterbricht" (solange er lauft) oder? |
KeyDown ist so wie es heißt. Das wird nur bei Runterbewegen der Taste ausgelöst.
|
1. warum zeichnest du das Auto immer doppelt?
2. sicher, dass sie "bremsen" und "beschleunigen" - procedures klappen? |
Zitat:
Versuch mal folgendes:
Delphi-Quellcode:
Und schau ob wirklich die Tasten erkannt werden und ob es auch die richtigen sind.
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin ShowMessage(Key); end; Grüsse, Daniel :hi: |
äh naja hab ich mir vielleicht falsch abgeguckt, bei beispielen im buch war auch immer doppelt (übermalen...neue pos...neu malen -> dachte das soll so sein) :roll:
´bin ja erst reingestolpert in die 2d-grafiken. die prozeduren sollten eigentlich stimmen.
Delphi-Quellcode:
hmm...ich weiß ja net, hoffentlich fällt euch was auf/ein!?
procedure TAuto.schneller(dv:real);
begin v:=v+dv; if v>=30 then v:=30; end; procedure TAuto.bremsen(dv:real); begin v:=v-dv; if v<=-10 then v:=-10; end; gruß haegar |
da wird nix angezeigt!? soll das etwa doch bedeuten das der timer primär läuft, und die anderen sachene erst weiter gehen, wenn timer ausgeschaltet is?.......aha auch wenn ich den timer noch nicht starte, zeigt er nichts über showmessage(Key); an :(
|
so wie ich das sehe wird zwar die Geschwindigkeit immer geändert (v) aber die Position (x) nicht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12: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-2025 by Thomas Breitkreuz