|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2001
Messaggi: 7
|
[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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
|
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: Codice:
Private Sub Timer1_Timer() Static k As Long List1.AddItem k k = k + 1 End Sub |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Nov 2001
Messaggi: 7
|
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 |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Nov 2001
Messaggi: 7
|
'nia faccio
__________________
Golf TDI130@154 (per ora |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Alma Mater Tergeste (son un mulo de Trieste)
Messaggi: 368
|
non basta richiamare la tua funzione, dopo ogni evento generato dalla scrollbar??
__________________
Mentecatto innominato anzi innominabile msn: [email protected] LE MIE FOTO La mia Type-R - HONDA CLUB ITALIA! ad eterna memoria di un vil gesto moderatorio |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:18.


















