View Full Version : [ Visual Basic ] Timer & Ciclo - Genymus
Salve,
Sto sviluppando un programma che ogni secondo legga il contenuto di un file di testo e lo stampi su una ListBox...
In pratica deve fare così:
Avvio Applicazione
+ 1 Secondo -> Leggi File -> Stampa Su ListBox ( Ciclo Continuo )
+ 1 Secondo -> Leggi File -> Stampa Su ListBox ( Ciclo Continuo )
+ 1 Secondo -> Leggi File -> Stampa Su ListBox ( Ciclo Continuo )
+ 1 Secondo -> Leggi File -> Stampa Su ListBox ( Ciclo Continuo )
+ 1 Secondo -> Leggi File -> Stampa Su ListBox ( Ciclo Continuo )
ecc...
è Possibile?
Grazie
Funzione Timer... qualcuno mi spiega come posso applicarla a questo programma?
Funzione Timer... qualcuno mi spiega come posso applicarla a questo programma?
meti il controllo timer e lo setti nella proprietà timer a 1000 ovvero un secondo.
da codice, per esempio cliccando in un button1, abiliti la proprietà del timer Enable su true da questo momento in poi ogni secondo il flusso entra nel code del timer qui leggi il file testo e lo stampi su listbox metti pure un' istruzione DoEvents e vai.
Mi dice che l'istruzione DoEvents non esiste...
come faccio a fare il refresh del sub in modo che mi ripeta l'operazione ogni tot secondi?
Mi dice che l'istruzione DoEvents non esiste...
come faccio a fare il refresh del sub in modo che mi ripeta l'operazione ogni tot secondi?
Per fare quello che vuoi tu basta che da una parte ( evento, routine, pulsante ecc... ) tu gli dia il Timer.Enabled = True, per farlo partire ( quindi la proprietà del Timer in design mode deve essere False ), e poi crea la routine Private Sub Timer_Tick ... e mettici tutto quello che deve fare per ogni scatto ( Tick ).
Do Events lascialo perdere... ;)
Perfetto
funziona però non è il massimo come chat
Perfetto
funziona però non è il massimo come chat
Cioè ?
volevo fare una chat in cui il testo si salvava in un file che veniva letto ogni secondo dal programma... però ogni volta che aggiorno la listbox il puntatore del file mi và all'inizio e così non si riesce a vedere le cose che vengono scritte dopo la grandezza della listbox
volevo fare una chat in cui il testo si salvava in un file che veniva letto ogni secondo dal programma... però ogni volta che aggiorno la listbox il puntatore del file mi và all'inizio e così non si riesce a vedere le cose che vengono scritte dopo la grandezza della listbox
Beh, tu forza la selezione dell'ultimo Item della listbox ad ogni Tick del Timer...
Un'altra cosa... ho creato una checkbox ma non riesco a fare, che se la check box è attiva, un'operazione:
If CheckBox1 = True Then
TextBox1.Text = "Cancellare File"
End If
Pur essendo giusto il codice (o almeno non dà errori), non mi scrive "cancellare file" dello la textbox.
Grazie
Come faccio ad attivare un'evento premendo il tasto "invio" ("enter") sulla mia tastiera?
Grazie
banryu79
19-05-2008, 16:27
Un'altra cosa... ho creato una checkbox ma non riesco a fare, che se la check box è attiva, un'operazione:
If CheckBox1 = True Then
TextBox1.Text = "Cancellare File"
End If
Pur essendo giusto il codice (o almeno non dà errori), non mi scrive "cancellare file" dello la textbox.
Grazie
Forse perchè oltre a settare la stringa da mostrare a video devi anche far eseguire un "refresh" della grafica?
Forse perchè oltre a settare la stringa da mostrare a video devi anche far eseguire un "refresh" della grafica?
mi può spiegare come devo fare?
Come faccio ad attivare un'evento premendo il tasto "invio" ("enter") sulla mia tastiera?
E questo?.. nessuno lo sa?
Beh, tu forza la selezione dell'ultimo Item della listbox ad ogni Tick del Timer...
e quest'altro?
mi può spiegare come devo fare?
E questo?.. nessuno lo sa?
e quest'altro?
If CheckBox1 = True Then
doevents
TextBox1.Text = "Cancellare File"
End If
mi può spiegare come devo fare?
E questo?.. nessuno lo sa?
e quest'altro?
il doevents è molto importante per il vb6
in pratica è una sorta di "semaforo thread" in c/c++ cosa che in vb il thread non esiste proprio farlo manualmente... nel tuo caso neanche riesci a stampare una innocua text...
doevents ' lo puoi anche mettere prima
If CheckBox1 = True Then
doevents 'passa il controllo ad altre operazioni
TextBox1.Text = "Cancellare File"
End If
Nel tuo caso probabilmente hai in corso la stampa sulla listbox nonchè il timer attivato e il ciclo continuo in corso DoEvents fa in modo di sospendere un attimo il ciclo in cui sei quindi passare alla stampa della text e ritornare al ciclo prioritario.
Quando si stà in un ciclo impegnativo o continuo e clicchi come nel tuo caso su una checkbox la textbox diventa bianca e ci rimane finchè non finisce il ciclo mentre con DoEvents viene passato l'evento disimpegnando la cpu dal ciclo poi come si esce dalla sub si ritorno al ciclo.
Cmq tanti DoEvents rallentano le prestazioni
<...
Come faccio ad attivare un'evento premendo il tasto "invio" ("enter") sulla mia tastiera?
...>
metti la proprietà del form keypreview = true
poi vai nella routine del form KeyPess e dentro scrivi:
If KeyAscii = 13 Then
... code
endif
saluti
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.