PDA

View Full Version : [ Visual Basic ] Timer & Ciclo - Genymus


Genymus
17-05-2008, 19:17
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

Genymus
17-05-2008, 20:09
Funzione Timer... qualcuno mi spiega come posso applicarla a questo programma?

okay
18-05-2008, 07:02
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.

Genymus
18-05-2008, 09:53
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?

MarcoGG
18-05-2008, 14:46
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... ;)

Genymus
18-05-2008, 17:32
Perfetto
funziona però non è il massimo come chat

MarcoGG
19-05-2008, 08:15
Perfetto
funziona però non è il massimo come chat


Cioè ?

Genymus
19-05-2008, 14:33
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

MarcoGG
19-05-2008, 15:35
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...

Genymus
19-05-2008, 15:49
come potrei fare?

Genymus
19-05-2008, 16:05
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

Genymus
19-05-2008, 16:13
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?

Genymus
19-05-2008, 18:33
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?

okay
20-05-2008, 03:23
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

okay
20-05-2008, 03:24
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