Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: dex - 10 Aprile 2010, 19:37:34

Titolo: message 3 tasti
Inserito da: dex - 10 Aprile 2010, 19:37:34
hello raga

in un messagebox devo inserire un terzo button per annullare un ciclo for

in pratica mi serve un message con tre button (Elimina,Annulla,Esci)
nel quale Esci annula il ciclo
Codice: [Seleziona]
     for i = 1 to MyRS.count
         IF Message.Delete("Vuoi eliminare questo Record?", "Elimina", "Annulla") = 1
             Medcli = MyRS!idcliente 
             MyRS = ModMain.MyConn.edit("clienti", "idcliente=" & Medcli)
             MyRS.Delete
             Message.Info("Record eliminato")
         ENDIF
     next
Titolo: Re: message 3 tasti
Inserito da: milio - 10 Aprile 2010, 20:03:37
ma non ti basta scrivere:
Codice: [Seleziona]
Message.Delete("Vuoi eliminare questo record","Elimina","Annulla","Esci")

?

Titolo: Re: message 3 tasti
Inserito da: dex - 10 Aprile 2010, 23:24:52
ma non ti basta scrivere:
Codice: [Seleziona]
Message.Delete("Vuoi eliminare questo record","Elimina","Annulla","Esci")

?



in questo caso annulla o esci hanno la stessa funzione. non entrano nell'if e annullano l'operazione.

a me serve Elimina (comincia il ciclo for), Annulla(Annulla l'operazione), Esci(Interrompe il ciclo for anche se questi è già iniziato).

in questo caso Esci si dovrebbe usare dopo aver premuto elimina e serve solo per bloccare in caso di errori.
Titolo: Re: message 3 tasti
Inserito da: Ceskho - 10 Aprile 2010, 23:57:49
Codice: [Seleziona]
     for i = 1 to MyRS.count
         IF Message.Delete("Vuoi eliminare questo Record?", "Elimina", "Annulla") = 1
             Medcli = MyRS!idcliente 
             MyRS = ModMain.MyConn.edit("clienti", "idcliente=" & Medcli)
             MyRS.Delete
             Message.Info("Record eliminato")
         ELSE
              BREAK
         END IF
     next
Titolo: Re: message 3 tasti
Inserito da: Berserker79 - 11 Aprile 2010, 07:56:31
Ciao, prova il SELECT CASE al posto dell'IF.
Titolo: Re: message 3 tasti
Inserito da: fsurfing - 11 Aprile 2010, 09:25:57
secondo me così non può funzionare, anche perchè premendo un pulsante il message si chiude , altrimenti il ciclo for non potrebbe neppure iniziare.
ti conviene una volta partito il ciclo far comparire una finestrella con il pulsante per uscire dal ciclo
Titolo: Re: message 3 tasti
Inserito da: leo72 - 11 Aprile 2010, 11:57:50
Un modo semplice sarebbe di usare un ToggleButton, che mantiene cioè uno stato una volta premuto. Così basta che dal ciclo For..Next tu controlli lo stato del ToggleButton.

Oppure usare un Button normale che modifichi il valore di una variabile visibile a livello di form.
Titolo: Re: message 3 tasti
Inserito da: Picavbg - 11 Aprile 2010, 16:44:49
io, nel programma che  sto realizzando, ho usato un funzione message con la seguente impostazione:
Codice: [Seleziona]
SELECT Message.Error("Attenzione! -> Tabella Residui" & Chr(10) & "V U O T A" & Chr(10) & Chr(10) & "Cosa vuoi fare?", "FORZO CHIUSURA PROGRAMMA", "PROSEGUO")
            CASE 1        ' È stato premuto il pulsante del messaggio --> "FORZO USCITA"
                QUIT
            CASE 2
              b_SwErro = TRUE       'per richiesta operatore di proseguire con Tabella Residui VUOTA
        END SELECT
Non ho mai usato un  terzo pulsante, però come ti ha indicato anche Berserker79, così dovrebbe funzionare. Devi solo aggiungere un test di tipo CASE 3
Vedi  SELECT Message.Question a pag.114 di "A Beginner's Guide to Gambas".   Auguri.  ;)
Ciao.
Titolo: Re: message 3 tasti
Inserito da: dex - 11 Aprile 2010, 20:24:18
grazie delle dritte raga

penso di aver risolto unendo i consigli di fsurfing e leo72.
ora mi metto all'opera e faccio comparire una seconda finestra(non modale) con un button che interrompe il ciclo for.