Ciao, dovrei scrivere una funzione che mi ritorna VERO se viene premuto un tasto della tastiera, FALSO in caso contrario.
Qualcuno sa darmi qualche dritta?
Ciao, dovrei scrivere una funzione che mi ritorna VERO se viene premuto un tasto della tastiera, FALSO in caso contrario.
Qualcuno sa darmi qualche dritta?
...NO ONE IS INNOCENT ANYMORE...
In quale contesto? In una normale applicazione Windows? :master:
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
si ho trovato l'evento keydown dell'oggetto form, solo che se ho il fuoco su un'altro oggetto (sempre all'interno del form), l'evento non si verifica.
...NO ONE IS INNOCENT ANYMORE...
Imposta la proprietà KeyPreview del form a True.Originariamente inviato da rotteninside
si ho trovato l'evento keydown dell'oggetto form, solo che se ho il fuoco su un'altro oggetto (sempre all'interno del form), l'evento non si verifica.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ho provato ma nulla...
...NO ONE IS INNOCENT ANYMORE...
Probabilmente, la proprietà KeyPreview si applica unicamente per l'evento OnKeyPress e non per OnKeyDown. Qual è il tuo scopo?Originariamente inviato da rotteninside
Ho provato ma nulla...
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
è una funzione che se viene premuto il tasto da TRUE e se no da FALSE.
In effetti è un po' poco come spiegazione ma me la sono trovata così e devo tradurla in DELPHI, era scritta in professional pascal ma non ho un sorgente di come venisse usata. Appena i miei colleghi me li trovano posso darti spiegazioni più dettagliate. La funzione originale era questa:
codice:function KEYPRESSED:boolean; var C_KEY_RESULT:longint; begin C_KEY_RESULT:=kbhit(); if C_KEY_RESULT = 1 then KEYPRESSED:=true else KEYPRESSED:=false; end;
...NO ONE IS INNOCENT ANYMORE...
Appunto. Ti ho chiesto in quale ambito ci stavamo muovendo perchè la tua sembra essere una vecchia funzione Pascal relativa ad un programma DOS. In Windows, non c'è l'attesa per l'accettazione di un tasto bensì un thread che controlla i messaggi in coda e genera un evento specifico quando il tasto viene premuto.
La mia domanda era specifica a cosa dovrebbe poi servire quella funzione.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Purtroppo non mi hanno ancora dato nulla, io ho provato a scrivere una variabile globale che si chiama KEYPRESSED, e poi ho fatto un ciclo :
quando premo un qualsiasi pulsante la mia variabile viene settata a TRUE, quindi mi aspetto di uscire dal ciclo, eppure è come se l'evento KeyDownEvent non venisse sentito. Come mai?codice:While KEYPRESSED = False do begin //istruzioni end;
...NO ONE IS INNOCENT ANYMORE...
Se non inserisci una chiamata ad Application.ProcessMessages nel ciclo, l'applicazione sarà impegnata ad eseguire il ciclo stesso e non potrà proseguire nell'elaborazione dei messaggi in arrivo, tra cui probabilmente è presente anche quello relativo alla pressione del tasto.Originariamente inviato da rotteninside
quando premo un qualsiasi pulsante la mia variabile viene settata a TRUE, quindi mi aspetto di uscire dal ciclo, eppure è come se l'evento KeyDownEvent non venisse sentito. Come mai?
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...