Newsgroup: it.comp.lang.delphi
Titolo: Stato del tastoi "INSERT"

Ciao a tutti,
   chiedo a qualcuno piu' esperto di me come sia la logica del tasto INSERT.
 
Sto cercando di leggere lo stato di questo tasto (VK_INSERT) ma ho 
grosse difficolta' perche', anche se impostato, alla partrnza del 
programma risulta sempre essere disattivato.
 
Cerco di spiegarmi un po meglio, ide di delphi ins attivo (insert), 
parte il programma nella oncreate
 
Var KS: TKeyboardstate;
begin
   GetKeyboardState(KS);
   if KS[VK_INSERT]=1 then
   begin
     Sleep(5);
   end;
end;
 
KS[VK_INSERT]=0.
 
Esco dal programma, premo INS e nell'ide ora ho OVERWRITE, lancio il 
programmaa nella oncreate, stesso codice, ho ancora KS[VK_INSERT]=0.
 
Mi dite come posso leggere lo stato di questo tasto??
Credo che sia programma dipendente, infatti avendo due ide aperti posso 
avere in uno isert attivo e nell'altro overwrite.
 
Bha, se qualcuno puo' darmi una mano ....
 
Grazie
 
Ciao
Daniele

Ho provato a me funziona, l'ho messo anche in  un timer per vedere 
continuamente l'aggiornamento.
 
Ho provato anche la funzione GetKeyState. ( testato con XP e delphi 7, 
ma non penso cambi )
 
Function tasto : Integer;
Var KS: TKeyboardstate;
Begin
   if GetKeyboardState(KS)=true then tasto := KS[VK_INSERT]
   else tasto := -1;
End;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Caption := IntToStr(tasto);
   Label2.Caption := IntToStr(GetKeyState(VK_INSERT))
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
   Label1.Caption := IntToStr(Tasto);
end;
 
 
 
-- 
-------------------------------
per scrivere in privato
togliere "1975nosp"
 
to reply remove "1975nosp"

 continuamente l'aggiornamento.
 
Purtroppo io non ho il tuo stesso risultato ...Ho provato in un nuovo 
progtto il tuo codice (magari nel mio c'era qualche inghippo) ma il 
risultato e' lo stesso.
 
Alla partenza del programma (nella onformcreate) in qualsiasi condizione 
si trovi il tasto insert dell'ide, nel mprogramma la funzione 
restituisce sempre 0 (ovvero insert off).
 
Ho provato a lanciare diversi programmi tra i quali notepad, word, 2 
instanze dell'ide.
Ebbene il tasto insert si comporta in modo diverso tra i programmi, mi 
spiego: Se nel primo ide premo insert e lo porto su overwrite, 
nell'altro ide e' sempre su insert; Cosi' negli altri programmi.
 
Il comportamento di Insert e' diverso da CAPS e NUM lock.
Infatti questi sono "di sistema" se li premi in un qualsiasi programma 
il loro cambio di stato si riflette in tutte le applicazioni.
Non e' cosi' per insert.
 
Qualcun'altro nella chiaccherata a portare nuove idee ??
 
Grazie
 
Ciao
Daniele
 
 

 restituisce sempre 0 (ovvero insert off).
 
Versione di Delphi?
VCL/FMX?
32 o 64 bit?
Versione di windows?
Provi a designtime, runtime o entrambi?
Esegui come utente amministratore o no?
 
 
:-|
 
A.


Ciao Alberto,
   sentivo la tua mancanza ... :-)) nella pseudo (ma corretta) caziatina...
 
Ecco le info tecniche
 
Delphi Seattle, Rio (10.3.3)
Windows 7 e 10 pro (64)
Applicazione in 32 bit
Run in entrambi (run & disegntime debug & release)
Eseguito come amministratore.
 
Come detto in precedenza, credo che insert sia "programma dipendente".
Infatti lanciando l'ide di seattle mi trovo in insert mode; premo ins e 
vado in overwrite.
Apro l'ide di rio e mi trovo in insert.
Passando da un ide all'altro sono in ovewrtie in seattle e insert 
nell'altro.
Ovviamente premendo insert in uno dei due cambio lo stato solo in quel 
programma.
Il mio monitor, e questa e' la parte che dovrebbe farti piacere leggere, 
non puo' monitorare lo stato di insert perche' non ha senso. Infatti, 
nel caso precedente, come viene settato insert ?? In overwrite (seattle) 
o insert (rio) ??
A questo punto, per complicare ulteriormente le cose, si dovrebbe fare 
un qualcosa che quando si passa da un programma all'altro reimposta lo 
stato di insert nel monitor in cui si trova in quell'applicazione.
 
Quindi ho rimosso il led dello stato di insert ......
 
Grazie dell'interessamento.
E' sempre un piacere leggerti, anche se hai abbandonato questo 
linguaggio, ogni tanto fatti sentire ...
 
Auguroni a te a tutto l'ng
 
Ciao
Daniele
 

 Come detto in precedenza, credo che insert sia "programma dipendente".
 
NO.
 
Leggi *ATTENTAMENTE*:
 
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeyboardstate
 
 
A.

 vado in overwrite.
[...]
 
C'e' un equivoco di fondo: testando VK_INSERT tu stai esaminando
lo stato del tasto, cioe' se l'utente sta tenendo il dito sulla
tastiera e sta tenendo giu determinati tasti.
Questo dovrebbe spiegare perche' lo trovi sempre disattivato...
 
Quello che stai cercando tu e' lo stato di "insert/overwrite" che
e' uno stato logico dell'applicazione (o forse del singolo Control) 
che convenzionalmente e' attivato premendo il tasto INSERT ma a quanto
ne so non c'e' un modo univoco di determinarlo da fuori, una cosa
tipo il led "NUM LOCK" per intenderci.
 
ciao
Giacomo

 Mi aggrego ai saluti ad Alberto: ciao, quanto tempo!
 
 
Ciao, Giacomo! 
Certo che per quanto so essere rompiballe non mi aspettavo un bentornato di questo genere..... :-D
 
 
A.


Personalmente, i tuoi continui consigli mi hanno insegnato a separare la logica dell'applicazione dalla presentazione; quindi non inserire codice nelle form, ma limitarsi a raccogliere input e visualizzare output.
E' ormai diventato un mantra da seguire, grazie.
Buona giornata a tutti.
 
 
 
Alex Pileci

 logica dell'applicazione dalla presentazione; 
 
Ecco: questa è una buona notizia.
Ma non per ME: per TE! :-D
 
A.


Non amando molto javascript, scrivere la logica dell'applicazione negli script che poi vengono eseguiti lato client nelle pagine mi farebbe impazzire.
E' anche vero che oggi i framework basati su js vanno per la maggiore, quindi credo che sia io a non capire abbastanza js.
 
 
Alex Pileci

 quindi credo che sia io a non capire abbastanza js.
 
Il fatto che "vada per la maggiore" vale poco.
Non sempre chi sceglie lo fa consapevolmente: spesso si va per moda o sentito dire.
Pensiamo alla diffusione di schifezze come vb6 o sqlserver... :-|
 
Poi js è fatto in quel modo e quindi ci tocca.
In casi simili, si cerca di fare il possibile per scrivere codice "pulito".
 
A.
 
 
 
A.

 tipo il led "NUM LOCK" per intenderci.
 
E' proprio cosi'.
Quando eseguo il programma la stato dell'insert nell'applicazione e' 0 
perche' non e' stato mai premuto. Quando lo premo cambia di stato ma il 
cambiamento si riflette solo sull'applicazione (in cui mi trovo).
 
Quello che mi sto chiedendo e' se e' possibile cambiare lo stato di 
insert in un programma (per esempio ide) da un altro esterno.
Per esempio lancio l'ide e per default insert e' on.
Lancio il mio programma dove insert e' a sua volta on perche' lo setto on.
Dal mio programma premo insert e passa a off .... esiste una remota 
possibilita' di settare a off anche insert nell'ide??
 
Dato che siamo a Natale ... siate buoni ....
 
Un augurio di buon Natale a tutti.
Ci si rilegge venerdi'...
 
Ciao
Daniele
 

 insert in un programma (per esempio ide) da un altro esterno. 
 
Ripeto: "Non esiste uno "stato dell'insert della applicazione".
 
Mo la domanda la faccio io: 
 
hai letto o no quanto scritto al link che ho postato io???? :-|
 
 
Per chi è cristiano: buon natale.
 
 
A.
 

 hai letto o no quanto scritto al link che ho postato io???? :-|
Si l'ho letta, ma insert si comporta in diverso (da me) rispetto ai 
tasti caps, num e scroll lock.
 
Alberto, potrebbe sembrare un tentativo di "polemizzare"; Nulla di tutto 
cio'.
 
Visto che non ne esco .... forzo l'uscita abbandonando il caso ....
 
Ti ringrazio per la tua assistenza e edisponibilita'.
 
Ciao e buona continuazione (se sei in ferie...)
 
Daniele
 
 
 
 

 rimane insert.
 
Ma hai provato a scrivere nei 2 editor?
Se no, prova.
Se si, cosa succede? Quali editor, SE PROVI A SCRIVERE, vanno in insert e in override?
 
 
A.

 Se si, cosa succede? Quali editor, SE PROVI A SCRIVERE, vanno in insert e in override?
 
Windows 10 pro apro
Ide seattle
Ide rio
Notepad++
Word
Notepad
 
In questa situazione ins e' in insert in tutti i programmi.
Mi sposto nell'ide di seattle e premo il tasto ins
Quello che succede e' che in seattle vado in overwrite, negli altri 
rimane in insert.
 
Ide seattle overwrite
Ide rio insert
Notepad++ insert
Word insert
Notepad insert
 
mi sposto in notepad++ e premo insert, qui va in overwrite negli altri 
rimane come settato in precedenza e ho
 
Ide seattle overwrite
Ide rio insert
Notepad++ overwrite
Word insert
Notepad insert
 
Vado in word, premoi insert .... qui noin succede nulla.
Rimane sempre in insert (non c'e' verso di cambiare).
Versione di word e' la starter.
 
Ide seattle overwrite
Ide rio insert
Notepad++ overwrite
Word insert
Notepad insert
 
E cosi' via; nel senso che nei programmi sensibili a insert od overwrite 
questo stato si riflette solo se si e' al loro "interno" (non come 
parassiti ehehehe).
 
Cerca di passare una buona fine di anno e che il nuovo inizio sia ottimo.
 
 
Un augurio a tutti di buon 2020 !!!
 
Ciao
Daniele
 
 

Scusate se non contribuisco alla discussione, ma non ho potuto fare a meno 
di scrivere qualcosa solo per dire quanto sono contento di vedere questo 
gruppo rianimarsi ogni tanto. Bentornati a tutti !
 
"Daniele"  ha scritto nel messaggio news:qt86kt$ugk$1...@gioia.aioe.org...
