Autore Topic: [RISOLTO]Uscita da un programma  (Letto 1877 volte)

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
[RISOLTO]Uscita da un programma
« il: 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

« Ultima modifica: 22 Ottobre 2012, 11:42:09 da aulin »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Uscita da un programma
« Risposta #1 il: 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.
« Ultima modifica: 22 Ottobre 2012, 10:53:40 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Uscita da un programma
« Risposta #2 il: 22 Ottobre 2012, 11:11:19 »
E se dopo il Me.Close ci metti un bel Return?  ;)

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Uscita da un programma
« Risposta #3 il: 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.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Uscita da un programma
« Risposta #4 il: 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.
« Ultima modifica: 22 Ottobre 2012, 11:26:42 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Uscita da un programma
« Risposta #5 il: 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


Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Uscita da un programma
« Risposta #6 il: 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
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Uscita da un programma
« Risposta #7 il: 22 Ottobre 2012, 11:30:11 »
il return va messo dopo il Me.Close()

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Uscita da un programma
« Risposta #8 il: 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

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Uscita da un programma
« Risposta #9 il: 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.
« Ultima modifica: 22 Ottobre 2012, 11:33:17 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Uscita da un programma
« Risposta #10 il: 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?

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Uscita da un programma
« Risposta #11 il: 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.
« Ultima modifica: 22 Ottobre 2012, 11:41:12 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Uscita da un programma
« Risposta #12 il: 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?

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Uscita da un programma
« Risposta #13 il: 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...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Uscita da un programma
« Risposta #14 il: 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]
« Ultima modifica: 22 Ottobre 2012, 11:46:49 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »