View Full Version : [vb6] tasti funzione e recordset
disumano
02-06-2004, 12:26
ho un form con un controllo ado e ho assegnato ai tasti da F9 a F12 i metodi
ado.recordset.movefirst
ado.recordset.moveprevious
ado.recordset.movenext
ado.recordset.movelast
quando però premo più volte ad es. F11 (movenext), il programma è come se si impallasse per qualche secondo:(
se invece i metodi suddetti li assegno a dei commandbutton funziona tutto + velocemente
PERCHE'???:confused:
e sopratutto come faccio a velocizzare?
grazie
Così su due piedi non saprei dirti, se mi passi il programma posso darci un occhiata da vicino.
L'unica cosa che mi viene in mente è che premi + volte la procedura che ti intercetta prenda in buffer i tasti premuti e li esegui poi impallando il programma, se è così dovresti porvare a mettere prima di fare muovere i record un DoEvents :)
disumano
03-06-2004, 10:37
ti posto un esempio.
i tasti sono F9, F10, F11 e F12 rispettivamente per movefirst, moveprevious, movenext e movelast.
se premi i tasti uno alla volta e senza sbatterti funziona tutto bene, se invece premi i tasti velocemente si inizia a bloccare un po' tutto e non si capisce + una ceppa :(
io avevo pensato ad un timer che permette l'esecuzione del codice associato ai tasti solo ad un certo intervallo l'una dall'altra, ma così facendo penso che creerei un macello indescrivibile...
d'altronde esisterà un modo meno brutale per far funzionare bene la cosa?
vedi un po' se riesci a porre rimedio per pietà :cry:
disumano
03-06-2004, 10:39
ho dimenticato l'allegato...:p
Prima di cominciare ... due cose, di la stai implementando ado a meno, di qua ado con il controllo adodc ... stai facendo un po' di confusione :p
Anzichè mettere i numeri, visual basic mette a disposizione già tutti i tasti premibili: vbKeyF10, vbKeyF11 e via deicendo :)
Oggi non ho tempo di guardare il progetto bene bene, ma secondo me come ti avevo già consigliato, dovresti lavorare con il recordset a mano, un lavoro del genere agaric i metti 2 ore in +, ma hai meno problemi di sicuro :p
disumano
03-06-2004, 12:03
indagando un po' ho scoperto che se elimino la possibilità del moveprevious tutto funziona bene...
non riesco a capire però perché:muro:
Originariamente inviato da disumano
indagando un po' ho scoperto che se elimino la possibilità del moveprevious tutto funziona bene...
non riesco a capire però perché:muro:
Sarà appunto un problema di quel controllo :p
disumano
03-06-2004, 12:06
caspio! il codice è praticamente lo stesso!
Case 121 'F10
If Adodc1.Recordset.BOF = False Then
listaforn.Clear
Adodc1.Recordset.MovePrevious
Call visualizza
Else
Adodc1.Recordset.MoveFirst
End If
Text2(0).SetFocus
Case 122 'F11
If Adodc1.Recordset.EOF = False Then
listaforn.Clear
Adodc1.Recordset.MoveNext
Call visualizza
Else
Adodc1.Recordset.MoveFirst
End If
Text2(0).SetFocus
mannaggia lesalasier! sto uscendo pazzo!:muro:
Sostituisci i vari Case Numero, con il Case vbKeyF10 e via decendo, è un po' + corretto da vedere.
Cmq non sto ben capendo cosa stai cercando di fare, con il richiamo del focus e la funzione visualizza :confused:
disumano
03-06-2004, 12:17
ho provato con vbkey al posto del numero e imho non cambia niente se non la leggibilità...
visualizza è solo la funzione che mi visualizza (appunto :p) il record disponendo i dati nei vari textbox e combobox del form.
il setfocus è uno scrupolo xché mi serve settare il focus su una determinata textbox.
alla fine il discorso è che cambia solo l'istruzione da movenext a moveprevious, le altre operazioni sono esattamente le stesse
Originariamente inviato da disumano
ho provato con vbkey al posto del numero e imho non cambia niente se non la leggibilità...
Bhe, ma cosa ti ho detto io :p , che era meglio perchè è più leggibile, non che funziona meglio, perchè quello è una valore costante!
VB è pieno di costanti da utilizzare anzichè utilizzare numeri o stringhe, bisogna solo sapere quali sono :oink: :) :oink: :p :oink:
disumano
03-06-2004, 22:28
ho capito una cosa:
qualsiasi cosa io scriva associata all'evento keydown vbkeyF10, alla prima pressione del tasto esegue le istruzioni, poi è necessaria una seconda pressione dello stesso tasto (in corrispondenza della quale non vengono eseguite le istruzioni) oppure un click del mouse per "sbloccare" il form! :eek:
insomma, è come se il solo tasto F10 non andasse bene, il codice è scritto bene (fin troppo bene per i miei standard:p )!!!
non sò più dove sbattere la testa:muro:
mmmmm...
Prova a mettere un DoEvents dentro alla procedura :confused:
disumano
03-06-2004, 23:37
non ho mai usato il doevents, come si fa?
Lo metti prima del select dentro la procedura
Il DoEvents è una funzione che fa un refresh generale.. esempio dentro un loop la tua form sarebbe incliccabile, invece con questa funzione, accetta altri eventi e non si pianta su uno.
Mi sono spiegato male... ma ho sonno :(
disumano
04-06-2004, 00:04
mi sono documentato un po', ma il doevents non fa al caso mio (almeno credo:p ).
infatti io non mi trovo in una specie di loop, semplicemente il tasto f10 non esegue il codice così come glielo pongo.
il codice non viene eseguito correttamente solo se è assegnato a f10.
non è che f10 a livello di sistema operativo serve a qlcs che interferisce con vb?
Per accorgetene hai debuggato il programma con il breakpoint ?
Il tasto F10 non serve a VB, e rimane il fatto che se il focus è piazzato sul form la precendeza va al form, per cui anche se tipo qlc combinazione di tatso serve a VB lui non intercetta il tasto :)
disumano
04-06-2004, 00:29
appena hai tempo guardati il progetto che ho allegato vari post fa, così capisci bene che cosa intendo...
per me è inspiegabile, nessuna altra definizione:cry:
ok, lo farò..
se ne hai uno aggiornato postalo.
PS: io non ho mai trovato questo problema dato che non utilizzo il controllo per il database :p
disumano
06-06-2004, 20:27
hai poi avuto modo di guardarti il mio progetto?
io ancora non sono riuscito a risolvere...
Sinceramente non sono sttao a casa sto week, sono andato a stare qlc ginro dalla morosa dato che non c'erano i suoi :oink:
Domani se riesco do un occhiata! :p
Corrado Sansone
24-08-2007, 10:59
Sono certo che a questo punto il problema è stato risolto.. o aggirato.
Ma visto che non ho trovato nessuna nota sulla soluzione sul problema della pressione del tasto VBKEYF10 in vb6, volevo suggerire di impostare KEYCODE=0 dopo l'esecuzione delle istruzioni legate a VBKEYF10.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.