Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: AlexLazarus - Novembre 05, 2022, 07:00:51 pm

Titolo: [RISOLTO] Finestra Ok / Annulla per terminare / non terminare un programma
Inserito da: AlexLazarus - Novembre 05, 2022, 07:00:51 pm
In corrispondenza del menu File / Esci è banalmente possibile annullare l'operazione:

Codice: [Seleziona]
procedure TForm1.MenuItem2Click(Sender: TObject);
Var Risposta: Integer;
begin
       Risposta:=Application.MessageBox('Vuoi davvero uscire?','Richiesta di chiusura',1);
       If Risposta = 1 Then Application.Terminate;
end;

Vorrei usare la medesima procedura anche quando si preme il pulsante di chiusura del programma (la X in alto a destra della finestra), ma non ho trovato la procedura per tornare al programma se si preme Annulla. Qui di seguito una bozza della procedura, che funziona qualunque tasto si preme.

Codice: [Seleziona]
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
Var Risposta: Integer;
begin
  Risposta:=Application.MessageBox('Vuoi davvero uscire?','Richiesta di chiusura',1);
       If Risposta = 2 Then ShowMessage('Hai premuto Annulla') // Qui bisogna inserire il codice per annullare l'operazione.
       else Application.Terminate;
end;

Come fare per annullare la chiusura del programma?
Titolo: Re:Finestra Ok / Annulla per terminare / non terminare un programma
Inserito da: DragoRosso - Novembre 05, 2022, 07:11:38 pm
Codice: [Seleziona]
Questo è già definito in Lazarus
//TCloseAction = (caNone, caHide, caFree, caMinimize);

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
Var Risposta: Integer;
begin
  Risposta:=Application.MessageBox('Vuoi davvero uscire?','Richiesta di chiusura',1);
       If Risposta = 2 Then
          begin
             ShowMessage('Hai premuto Annulla'); // Qui bisogna inserire il codice per annullare l'operazione.
             CloseAction := caNone;
          end
       else
          begin
             CloseAction := caFree;
            //Application.Terminate;
         end;
end;

Ciao
Titolo: Re:Finestra Ok / Annulla per terminare / non terminare un programma
Inserito da: AlexLazarus - Novembre 06, 2022, 08:20:51 am

Questo è già definito in Lazarus
//TCloseAction = (caNone, caHide, caFree, caMinimize);
Rapido, preciso, puntuale. Come al solito.  ;)
Grazie!  :)