View Full Version : [VB] ScrollBar (Sono alla canna del Gas)
Perchè quando uso i controlli ScrollBar il programma si ferma ?
Esempio, se programmo una cosa tipo:
for i = min to max
DoEvents()
'chiedi a Bill se ci è o ci fa
'aspetta una risposta
'e via
next i
Perchè se con il mouse attivo una ScrollBar il programma si ferma ?
Come posso fare ?
Chi mi aiuta ? perpiacere :)
Ho notato che il programma che gira in underground si ferma non solo quando si agisce su una scrollbar, ma anche quando sposti o ridimensioni il form. Probabilmente perchè in VB queste operazioni vengono eseguite con una priorità maggiore rispetto all'esecuzione del codice, trattandosi di azioni eseguite su zone "non-client" (la barra del titolo, i bordi e le barre di scorrimento) e quindi affidate direttamente a Windows.
La soluzione potrebbe essere quella di utilizzare un timer:
Private Sub Timer1_Timer()
Static k As Long
List1.AddItem k
k = k + 1
End Sub
Nota che così facendo non è necessario utilizzare DoEvents.
Grazie per l'aiuto ma purtroppo il mio problema non puo' essere risolto con il controllo Timer.La funzione principale del programma è quella di inviare una rischiesta via rs232 e ricebere la risposta nel più breve tempo possibile.Adesso il programma è+/- così:
Sub Comunicazione
CicloInizio:
'Avvia il timer di controllo timeout comunicazione
frmCom.tmrTimeOut = True
'Prepara la richiesta da inviare
Invia = ""
Invia = Chr$(InviaByte(1)) + Chr$(InviaByte(2)) + Invia + Chr$(&H3)
'Preleva dal buffer eventuali dati residui
'Risposta = frmCom.MSComm1.Input
'Invia la richiesta
frmCom.MSComm1.Output = Invia
'Reimposta TentativoCom
TentativoCom = False
'Loop attesa risposta
Do
Dummy = DoEvents()
'Se il timeout è intervenuto più di tre volte allora il flag TimeOut sarà impostato, quindi:
If TimeOut = True Then Exit Sub
'Controllo risposta sulla esatta lunghezza
Loop Until frmCom.MSComm1.InBufferCount = 6 + InviaByte(12)
'Se sei qui la risposta è ok
Risposta = frmCom.MSComm1.Input
'Se sei qui allora la risposta è ok quindi disattiva il timer di controllo timeout
frmCom.tmrTimeOut = False
GoTo CicloInizio
End Sub
Probabilmente sono partito con il piede sbagliato sin dall'inizio e questa sub non è certamente il massimo però...mi basterebbe trovare il metodo magari utilizzando le API per risolvere il problema ScrollBar.Al momento ho bypassato il problema creando da me un controllo VScroll e HScroll (abbastanza brutti).
Ciao e grazie :)
non basta richiamare la tua funzione, dopo ogni evento generato dalla scrollbar??
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.