Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: aulin - 22 Ottobre 2012, 10:40:30

Titolo: [RISOLTO]Uscita da un programma
Inserito da: aulin - 22 Ottobre 2012, 10:40:30
Buongiorno a tutti.
Anni fa programmavo in gambas2 poi per un po di tempo ho smesso e ora sto ricominciando con gambas3. Questo forum come allora è certamente molto utile e infatti provo a richiedere aiuto.
Dal programma principale richiamo un form. La prima cosa che effettua questo programma richiamato è un controllo per vedere se può essere eseguito. Questo controllo avviene in base al confronto tra 2 numeri. In un caso esegue il programma, nell'altro caso scrive un messaggio e deve uscire subito.
Come faccio a uscire subito da questo programma? In realtà anche se non deve essere eseguito il programma mi evidenzia la form con il messaggio e poi mi consente di uscire. E' possibile uscire facendo vedere solo il messaggio. Grazie in anticipo per le risposte.
Codice: [Seleziona]
Public Sub Form_Open()

If ValProgramma > M1.UtenteValProg Then
  Message.Warning("Programma non eseguibile - Utente non in possesso si credenziali")
    Me.Close
Endif

Me.Center
Me.caption = "GESTIONE RENDICONTAZIONE " & Me.name

          Inizio()

End

Titolo: Re: Uscita da un programma
Inserito da: vuott - 22 Ottobre 2012, 10:51:42
Premetto che io ho Gambas-3.
Ho riprodotto il tuo codice allegato ed i suoi effetti. Ebbene a me il Form non appare. Segnalo, però, che dopo aver chiuso la finestra del messaggio, poiché è stata imposta la chiusura del programma mediante il comando Me.Close, mi dà ovviamente l'errore Invalid object alla linea Me.Center. Cosicché ho dovuto inserire un Else.

Ad ogni modo, per tentare di rispondere alla tua richiesta, potresti provare a porre un Me.Hide immediatamente prima della linea relativa al comando Message.Warning(etc..etc..). Il Form in tal caso viene insomma tenuto nascosto.
Titolo: Re: Uscita da un programma
Inserito da: milio - 22 Ottobre 2012, 11:11:19
E se dopo il Me.Close ci metti un bel Return?  ;)
Titolo: Re: Uscita da un programma
Inserito da: aulin - 22 Ottobre 2012, 11:11:33
Intanto grazie per la rapida risposta. Anchio sto lavorando con gambas-3 e Fedora-17.
Codice: [Seleziona]
Public Sub Form_Open()

If ValProgramma > M1.UtenteValProg Then
  Message.Warning("Programma non eseguibile - Utente non in possesso si credenziali")
  me.hide
  Me.Close
Else
     Me.Center
     Me.caption = "GESTIONE RENDICONTAZIONE " & Me.name
          Inizio()
Endif
End

Il codice sopra dovrebbe essere la modifica che suggerivi. Il problema permane.
Questo codice serve a impedire la esecuzione del programma se l'utente non ha le giuste credenziali( che sono poi un valore numerico).
Se l'utente non ha le giuste credenziali il programma viene eseguito, effettuato il controllo  viene chiuso. Gambas invece visualizza sempre il form.
Come fare a farlo uscire senza visualizzare il form?
In realtà poi non mi interessa neanche l'hide io vorrei chiudere il programma e tornare al programma chiamante. Spero di aver chiarito.
Titolo: Re: Uscita da un programma
Inserito da: vuott - 22 Ottobre 2012, 11:21:01
Io non ho la effettiva possibilità di testare il codice, poiché a me il tuo problema non si manifesta.

L'.Hide avrebbe dovuto tenere celato il Form, che poi sarebbe stato chiuso con il comando .Close.

Prova, però, il suggerimento di milio mediante il Return: lui risolve sempre con infallibile certezza.
Titolo: Re: Uscita da un programma
Inserito da: aulin - 22 Ottobre 2012, 11:25:00
Anche inserendo il return il problema rimane. :hatecomputer:

Codice: [Seleziona]
Public Sub Form_Open()

If ValProgramma > M1.UtenteValProg Then
 
  Message.Warning("Programma non eseguibile - Utente non in possesso si credenziali")
  Return
  Me.Close
Else

     Me.Center
     Me.caption = "GESTIONE RENDICONTAZIONE " & Me.name

          Inizio()
Endif
End

Titolo: Re: Uscita da un programma
Inserito da: vuott - 22 Ottobre 2012, 11:29:45
Anche inserendo il return il problema rimane. :hatecomputer:

Fai quest'altro disperato tentativo: prima della linea del messaggio poni questo comando:
Application.Daemon = True
Titolo: Re: Uscita da un programma
Inserito da: milio - 22 Ottobre 2012, 11:30:11
il return va messo dopo il Me.Close()
Titolo: Re: Uscita da un programma
Inserito da: aulin - 22 Ottobre 2012, 11:31:13
Avevo deciso di far vedere comunque la form. In realtà gambas mi fa vedere il messaggio e poi mi evidenzia la form.
Che non sia possibile inserire controlli dentro il Form_Open()?

Codice: [Seleziona]
Public Sub Form_Open()

     Me.Center
     Me.caption = "GESTIONE RENDICONTAZIONE " & Me.name
    
If ValProgramma > M1.UtenteValProg Then
  Message.Warning("Programma non eseguibile - Utente non in possesso si credenziali")
  Return
  Me.Close
Else
          Inizio()
Endif
End
Titolo: Re: Uscita da un programma
Inserito da: vuott - 22 Ottobre 2012, 11:31:43
il return va messo dopo il Me.Close()

Prova però prima questo suggerimento di milio.


Che non sia possibile inserire controlli dentro il Form_Open()?
...non mi risulta questo.
Titolo: Re: Uscita da un programma
Inserito da: aulin - 22 Ottobre 2012, 11:35:58
idem
Codice: [Seleziona]
Public Sub Form_Open()

     Me.Center
     Me.caption = "GESTIONE RENDICONTAZIONE " & Me.name
    
If ValProgramma > M1.UtenteValProg Then
  Application.Daemon = True
  Message.Warning("Programma non eseguibile - Utente non in possesso si credenziali")
    Me.Close
  Return
Else
          Inizio()
Endif
End


In realtà il messaggio sta dentro Form_Open(). Come si comporta Form_Open().
A me servirebbe quello che in altri linguaggi sono le operazioni che vengono fatte prima dell'apertura della form. E' fattibile?
Titolo: Re: Uscita da un programma
Inserito da: vuott - 22 Ottobre 2012, 11:38:30
Avevo deciso di far vedere comunque la form. In realtà gambas mi fa vedere il messaggio e poi mi evidenzia la form.
Io porrei in tal caso un Me.Show prima dell'IF di controllo.



A me servirebbe quello che in altri linguaggi sono le operazioni che vengono fatte prima dell'apertura della form. E' fattibile?
...ritengo di sì. Bisognerebbe trovare i comandi e la sequenza giusta.
Titolo: Re: Uscita da un programma
Inserito da: aulin - 22 Ottobre 2012, 11:40:52
Bravo Vuott. Grazie.
il Me.show risolve. grazie
Codice: [Seleziona]
Public Sub Form_Open()

     Me.Center
     Me.caption = "GESTIONE RENDICONTAZIONE " & Me.name
     Me.Show
If ValProgramma > M1.UtenteValProg Then
  Application.Daemon = True
  Message.Warning("Programma non eseguibile - Utente non in possesso si credenziali")
    Me.Close
  Return
Else
          Inizio()
Endif
End
scusatemi dove inserisco il risolto?
Titolo: Re: Uscita da un programma
Inserito da: md9327 - 22 Ottobre 2012, 11:42:43
Il metodo che ti interessa è _new(), che è il costruttore dell'oggetto.

Questo è uno dei metodi nascosti inseriti negli oggetti da gambas...
Titolo: Re: Uscita da un programma
Inserito da: vuott - 22 Ottobre 2012, 11:43:53
Bravo Vuott. Grazie.
Ti sei fidato di un asino come me... ahia !


scusatemi dove inserisco il risolto?
Devi riaprire il tuo primo messaggio cliccando su Modifica; quindi aggiungi al titolo la parola [Risolto]
Titolo: Re: Uscita da un programma
Inserito da: vuott - 22 Ottobre 2012, 11:45:25
Il metodo che ti interessa è _new(), che è il costruttore dell'oggetto.

Questo è uno dei metodi nascosti inseriti negli oggetti da gambas...

Lascio il campo ad md9327 !
Titolo: Re: [RISOLTO]Uscita da un programma
Inserito da: md9327 - 22 Ottobre 2012, 11:58:49
Nessun "campo" da lasciarmi... :D

Nel wiki ho scritto qualcosa a riguardo, e anche qui nel forum c'è parecchia roba in merito ai metodi nascosti.

Se si cerca, si "trova"...  :D
Titolo: Re: [RISOLTO]Uscita da un programma
Inserito da: vuott - 22 Ottobre 2012, 12:05:56
Nessun "campo" da lasciarmi... :D

Nel wiki ho scritto qualcosa a riguardo, e anche qui nel forum c'è parecchia roba in merito ai metodi nascosti.

Se si cerca, si "trova"...  :D

...una sorta di "caccia al tesoro" !
Titolo: Re: [RISOLTO]Uscita da un programma
Inserito da: md9327 - 22 Ottobre 2012, 13:52:10
Ma daiii....

Solo pichi giorni fà ho ridescritto questi metodi in un'altra discussione...  :)
Titolo: Re: [RISOLTO]Uscita da un programma
Inserito da: vuott - 22 Ottobre 2012, 15:47:37
Solo pichi giorni fà ho ridescritto questi metodi in un'altra discussione...  :)

Sì, l'ho trovata:
http://www.gambas-it.org/smf/index.php?topic=2268.msg25881#msg25881