Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Picavbg - 14 Luglio 2010, 23:39:10

Titolo: [RISOLTO]Intercettare da programma click sui pulsanti di sitema di un Form
Inserito da: Picavbg - 14 Luglio 2010, 23:39:10
Il titolo é un pò lungo, ma non m'é venuto meglio di così.
Provando il mio programma che, a proposito, é ormai molto avanti, ho casualmenmte scoperto una sorpresa negativa: se nella finestra di digitrazione dei movimenti, dopo avere inserito una o più righe, vado a cliccare sul pulsante di sistema "x", quello più a destra nella barra del titolo del Form (vedi allegato), il Form si chiuede ed in pratica mi resta la giornata indefinita con movimenti appesi, ma che avrebbero dovuti essere cancellati. Il Form in questione è di tipo modale. Ho cercato di capire come intercettare il click, ma sembra che il sistema, avendo il sopravvento sull'applicazione, non ne permetta il riconoscimento per intraprendere azioni razionali sui dati inseritri e, quindi, parzialmente definiti. Però un evento del genere mi determina alterazioni non controllate sui dati già trasferiti nel DB.
Mi spiego meglio la chiusura del Form attravero il pulsante di sistema "x", corrisponde nella logica del programma alla pressione del pulsante "ANNULLA", posto in basso a sinistra, nel form. Però, il click su quest'ultimo scatena nell'evento relativo la pulizia, dalle tabelle del DB già interessate, di tutti i movimenti in corso di inserimento. Non potendo intercettare l'evento click sul pulsante di sistema "x", non posso gestire alcuna azione di reset nel DB, per cui, ripartendo, il programma non é più in grado di funzionare perché trova ovviamente una situazione di alterazione anomala, non gestibile.
Come posso agire automaticamente da programma? Se non é possibile le alternative sono: raccomandare all'operatore utente di non cliccare mai su quel ... pulsante "x", oppure accendere una candela votiva al Santo protettore dei programmatori perché vigili sul click maldestro dell'utente del momento.
 :D
 :( :(
Titolo: Re: Intercettare da programma click sui pulsanti di sitema di un Form
Inserito da: Ceskho - 15 Luglio 2010, 00:10:40
Spero di non aver capito male. Se il tuo problema è la chiusura di un form, puoi benissimo inserire nella sub close del form una funzione che testi se veramente l'utente vuole chiudere la finestra e nel caso annulli l'ultima operazione effettuata nel database.
Titolo: Re: Intercettare da programma click sui pulsanti di sitema di un Form
Inserito da: milio - 15 Luglio 2010, 05:49:49
Giusto... Io in un programma avevo il tuo stesso problema e ho risolto in questo modo:

Codice: gambas [Seleziona]
PUBLIC SUB Form_Close()

  IF Message.Question("Sei sicuro?", "Si", "No") = 2 THEN
    STOP EVENT
  ELSE
      'codice che annulla le operazioni fatte nel form
  ENDIF

END
Titolo: Re: Intercettare da programma click sui pulsanti di sitema di un Form
Inserito da: milio - 15 Luglio 2010, 05:56:08
Oppure se vuoi che venga chiuso il form solo con il tasto 'Salva' o 'Chiudi' del form potresti fare in questo modo

Codice: gambas [Seleziona]
PRIVATE $chiusura AS Boolean

PUBLIC SUB Form_Close()

  IF NOT $chiusura THEN STOP EVENT
 
END


PUBLIC SUB Annulla_Click()

  $chiusura = TRUE
  ME.Close()

END

PUBLIC SUB Salva_Click()

  $chiusura = TRUE
  ME.Close()

END
Titolo: Re: Intercettare da programma click sui pulsanti di sitema di un Form
Inserito da: Picavbg - 15 Luglio 2010, 15:42:37
Spero di non aver capito male. Se il tuo problema è la chiusura di un form, puoi benissimo inserire nella sub close del form una funzione che testi se veramente l'utente vuole chiudere la finestra e nel caso annulli l'ultima operazione effettuata nel database.
Hai capito benissimo. Purtroppo sono io che, nella prova della Sub_Close del Form, ho avuto l'impressione che non venisse schedulata dal click sul pulsante di sistema "x". :hard: :hard:
Da quella prova mal fatta é nata una domanda inutile. Grazie per avermi resettato il corto circuito mentale. Certo, farò proprio come dici tu, anche perché era quello a cui avevo pensato, prima che venisse il buio.  :)
 :( :(
Titolo: Re: [RISOLTO]Intercettare da programma click sui pulsanti di sitema di un Form
Inserito da: Picavbg - 15 Luglio 2010, 16:25:58
Modifica fatta e Prova eseguita con la massima soddisfazione. Grazie ancora  ;D
Ciao a tutti.