Newsgroup: it.comp.lang.visual-basic
Titolo: Inibire succesivi clic..come???

Ho svillupato una applicazione in VB5 che colloquia con altri dispositivi
tramite porta seriale.
Ho usato i command button per eseguire procedure di comunicazione che
impiegano a volte anche 4-5 secondi per essere completate.
Vorrei cortesemente sapere come posso inibire il command button dopo il
primo clic del mouse, in quanto se proseguo a cliccare
sul button quando la procedura sta lavorando si innescano in coda una serie
di chiamate all'evento clic.
Esiste una proprietą o controllo per evitare tutto ciņ.
Grazie comunque e buon lavoro a tutti.
kave

 
la proprieta' e' E.....d  le lettere mancanti le trovi sull'help e forse
ti puo' servire anche il metodo Refresh

 ti puo' servire anche il metodo Refresh
Potresti essere + chiaro !!!
grazie
Kave

 Potresti essere + chiaro !!!
La parola e' di  7 lettere comincia per 'E' e finisce per 'd'
ed e' una proprieta' del controllo CommandButton, come pure il metodo
Refresh

la proprietà Enabled, command1.enabled = true il button funziona,
command1.enabled = false non lo puoi più premere!
quello che intendeva farti capire marco, è che questa domanda (come molte
altre per carità!) è banalissima, e se tu dessi un'occhiata all'help on-line
di VB non avresti bisogno di porla a questo NG. Comunque no problem,
solamente in futuro prima di postare una richiesta di aiuto, prova a
ragionarci su un po' di più; è anche un ottimo metodo per imparare...:)
ciaoz
Obese Dwarf
p.s: togliere NOP dall'indirizzo per risposte!

 Kave

> La parola e' di  7 lettere comincia per 'E' e finisce per 'd'
orizzontale o verticale ? :)

Refresh
Inibire solamente il comand serve ben a poco se all'interno dell'evento
command_click non è presente un bel doevents.
Se non è presente questa istruzione, anche se inibisci il tasto all'inizio
della routine e lo abiliti alla fine, tutti i click che fai durante
l'esecuzione della routine vengono bufferizzati, prima dell'uscita il tasto
viene abilitato e il SO gli manda il primo click accodato: questo, trovando
il tasto abilitato innesca un altro evento (cosa che roberto non voleva).
Ciao Marco


Giusto ma in genere vado a memoria e non sempreposso provare le
soluzioni proposte, e comunque per domande del genere sono sempre e solo
degli spunti e non soluzioni complete

Basta che all'inizio della procedura che viene attivata al click del
pulsante, imposti la proprietà Enabled=False in modo che il pulsante diventi
grigio e non più cliccabile.
Poi alla fine della stessa procedura rimetti la proprietà Enabled=True.
Ciao

 il tasto abilitato innesca un altro evento (cosa che roberto non voleva).
non viene bufferizzato un bel niente, perchè l'evento click non può essere
invocato se il command button è disabilitato!
il doevents() torna utile se durante l'esecuzione del comando vuoi che
vengano eseguiti altri processi concorrenti, ma non mi sembra che il nostro
amico avesse questa necessità, data la breve durata del suo thread...;)


......
Esegui questo e clicca sul command finchè è disabilitato...
Private Sub Command1_Click()
Static count As Integer
Command1.Enabled = False
count = count + 1
For i = 1 To 10000
Me.Cls
Print i
Next i
Me.Caption = count
Command1.Enabled = True
End Sub
... no comment
Ciao Marco




Supponiamo che il tuo command button si chiama CMD1 ne crei un altro
IDENTICO ad es. CMD2 con proprita' Enabled = false e lo metti esattamente
sopra a CMD1 poi clic destro e lo porti in sottofondo (send to back x
versione inglese altrimentri [?]credo[?]  porta in secondo piano)
nella tua Sub di gestione  di CMD1 fai :
CMD1.Visible = FALSE
............
.........
.........
.........
.........
........
.......
.......
........
......
CMD1.VISIBLE = TRUE
ed il gioco e' fatto.........
appena l'utente fa clic, parte la procedura che nasconde CMD1 e mostra
CMD2.... qualsiasi altro eventuale clic viene precessato da CMD2 che non
fa...... assolutamente nulla .......
alla fine dell'elaborazione torna visibile CMD1..........OK ??
Oppure .... ancora + pulito..............:
Sub CMD1_Click()
       If Elabora = false then Exit Sub
       CMD1.Enabled = False
       Elabora = False
       ............
       ...........
       ............
       Elabora = true
       CMD1.Enabled = True
End Sub
naturalmente la variabile Elabora deve essere inizializzata a TRUE (nel form
Load ad esempio !)
non ci vuole tanto insomma..........
Ciao
Ven.

Ma te guarda che casino gli fai fare per una stupidata simile!
Ascolta il mio ultimo suggerimento che è più pulito.
Ciao


Per me o ci fai o ci sei !!!!!!!! Per il problema proposto  IL TUO
SUGGERIMENTO NON FUNZIONAAAAAAA !!!!!!! Prova a fare quanto suggerito dal
Post di Rodriquez.........poi mi dici....
Prima di dire cavolate ....... assicurarsi che la bocca sia collegata al
cervello .......GRAZIE !!!
Ciao
Ven.