| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Delphi - Anweisung pro Tastendruck nur einmal im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi. Zunächst - ich programmiere in Delphi. Ich möchte einen Tastendruck zur Laufzeit regestrieren und dann ein paar Anweisungen ...
![]() |
| | #1 (permalink) |
| Registriert seit: 09.12.05 ![]() Likes: 0 | Anzeige Hi. Zunächst - ich programmiere in Delphi. Ich möchte einen Tastendruck zur Laufzeit regestrieren und dann ein paar Anweisungen ausführen lassen. Also hab ich den Code für den Tastendruck etc. in nen Timer mit dem Intervall von "1" reingeschrieben, woanders macht es ja wenig Sinn, da es ja ständig abgefragt werden soll. Vereinfacht dargestellt: Code: IF (GetAsyncKeystate(vk_LCONTROL)) < 0 THEN begin ListBox1.Items.Add(Text); etc. etc2. end; Wie kann ich das lösen ? Durch irgendwas besonderes was ich in den Timer reinschreibe, oder muss ich gleich ne ganz andere Komponente verwenden ? Wenn "ja" welche ? Vielen Dank für Antworten. |
| | |
| | #2 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Eigentlich war meine erste Idee einen Zähler einzubauen, der eben mitzählt, ob die Taste schon losgelassen wurde, aber es gibt auch eine andere Variante: http://msdn.microsoft.com/library/en...asp?frame=true Zitat:
Code: if (get_keystate(x)=down) AND (key_up=true) then
begin
mache irgendwas;
key_up:=false;
end;
if getkeystate(x)=up then key_up:=true;
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) | |
| Themenstarter Registriert seit: 09.12.05 ![]() Likes: 0 | Zitat:
Pseudo Code: WENN Keystate = Down UND Key_up = True DANN ... Key_up IST TRUE WENN Keystate = up IST Damit widersprechen sich doch die Forderungen oder ?! Edit: Naja ich hab nach dem Schema auch noch etwas rumprobiert es aber nicht hinbekommen. Hab noch ein paar Links wo ich schon dachte die Lösung zu haben aber es funktioniert auch nicht. Info: http://www.dsdt.info/tipps/?id=28 und http://www.dsdt.info/tipps/?id=208 Vielen Dank aber für die Antwort. Bis Morgen Abend, ich geh heiern. | |
| | |
| | #4 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Zitat:
so sah das aus ( ist eigentlich MASM, ein wenig jetzt in den Pseudocode-Status editiert, die 1 und 0 kann man auch einfach durch TRUE/FALSE ersetzen, werde mich jetzt aber um diese Uhrzeit hüten, da großartig rumzueditieren Code: pushed:=GetKeyState,VK_SPACE
.if (pushed==TRUE) &&( messages.laser_flag==0)
messages.laser_flag:=1;
.if messages.feuer==0
messages.feuer:=1
.else
messages.feuer:=messages.feuer+1 ;wenn taste weiterhin gedrückt wird, nur als 1 Schuss zählen
.endif
PlaySound,305,hInstance,SND_RESOURCE+SND_ASYNC
.elseif (state==FALSE)
messages.laser_flag:=0
messages.feuer:=0
.endif
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
| | #5 (permalink) |
| Senior Member Registriert seit: 18.05.04 ![]() Likes: 0 | Du hast ja anscheinend nen Timer laufen. timerprozedur(); begin knopfdruckbedingung(); end; Nun willst du wissen ob im letzten Frame der Timer gedrückt war. Also setzt du eine unterbedingung: Nur auslösen, wenn im letzten Frame nicht gedrückt war. timerprozedur(); begin knopfdruckbedingung(parameter); imletztenframegedrückt:=GetKeyState(); end; wobei dann knopfdruckbedingung aus if(imletztenframedgedrückt=false) and (aberjetztgedrückt=true) then.. Achja bei Delphi gibts bei den Ereignissen allerdings ne einfachere Lösung. Ich gehe mal davon aus, dass du auf einer Form rumhantierst und nicht in DirectX oder so. Da wo du OnCreate etc. findest gibts auch OnKeyDown OnKeyPress etc.. da ist der mechanismus schon eingebaut.
__________________ Die neuen Desire Z und Desire HD Smartphones |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Mit Python Tastendruck unter Windows erkennen | gugugs | Code Kitchen | 5 | 18.04.09 00:16 |
| c#, Tastendruck auf Button umleiten | 1337Kuh | Code Kitchen | 6 | 17.04.08 10:07 |
| Tastendruck simulieren: Zugriff verweigert | Gargamel27 | Code Kitchen | 9 | 28.11.07 10:23 |
| Tastendruck über Hook simulieren | Gargamel27 | Code Kitchen | 1 | 21.11.07 22:15 |
| If-anweisung php | ToXiCity | Code Kitchen | 10 | 25.04.06 14:20 |