Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di vanzer
    Registrato dal
    Jan 2006
    Messaggi
    12

    Intercettare le form in chiusura (Delphi)

    Salve a tutti,
    passo subito a spiegare il mio problema:
    Sfruttando un ApplicationEvents, posto su una form principale, vorrei sapere quando le varie form che vengono chiuse. Pensavo di intercettare il messaggio in questa maniera, ma non funziona..

    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
    var Handled: Boolean);
    begin
    if Msg.message = WM_CLOSE then
    begin
    //Codice
    end;
    end;

    Qualche idea?

  2. #2
    Perchè non usare l'evento OnClose di ogni Form?

    Ciao
    FSL
    Il mio freeware: http://fsl.sytes.net o http://freesoftland.sytes.net; no spyware, no malware

    Vuoi programmare in metà tempo senza spendere una lira? Prova il mio "Developer's Tips & Tricks"...

  3. #3
    Utente di HTML.it L'avatar di vanzer
    Registrato dal
    Jan 2006
    Messaggi
    12
    Perchè ho tante form....quasi trenta....
    Non volevo aggiungere in unit per unit righe di codice, ma stavo cercando una soluzione al problema più possibe pulita e performante, senza toccare troppo il codice dell' applicazione

  4. #4
    In un caso simile, avevo risolto con una sola riga di codice per ogni form...

    sulle form secondarie alla chiusura invio un messaggio alla MainForm:

    Codice PHP:
        // Form1.FormClose:
      
    SendMessage (MainForm.HandleWM_USER10);

      
    // Form2.FormClose:
      
    SendMessage (MainForm.HandleWM_USER20);

      ....

      
    // Form30.FormClose:
      
    SendMessage (MainForm.HandleWM_USER300); 
    Sul MainForm ho un dispatcher dei messaggi:

    Codice PHP:
    private
        
    procedure WMformClose (var msg TMessage); message WM_USER;

    implementation;

    procedure TMainForm.WMformClose (var msg TMessage);
    var
      
    FormClosedinteger;
    begin
      FormClosed
    := msg.wParam;
      case 
    FormClosed of
        1

        
    2:
        
    // ecc...
      
    end;
    end
    Ciao
    FSL
    Il mio freeware: http://fsl.sytes.net o http://freesoftland.sytes.net; no spyware, no malware

    Vuoi programmare in metà tempo senza spendere una lira? Prova il mio "Developer's Tips & Tricks"...

  5. #5
    Utente di HTML.it L'avatar di vanzer
    Registrato dal
    Jan 2006
    Messaggi
    12
    Ok, grazie mille! direi che può andare, anche se però avrei preferito trovare un messaggio di windows specifico, in modo da non dover aggiungere nessuna riga di codice alle form

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    La soluzione è ancora più semplice: sfruttare la VFI (Visual Form Inheritance) di Delphi, cioè la possibilità di ereditare un Form esistente creandone una classe discendente.

    Nella classe del Form base è possibile gestire l'evento OnClose segnalando a chi di dovere l'avvenuta chiusura del Form stesso; ereditando altri Form da questo, si eredita anche il meccanismo di segnalazione ed è sufficiente aggiungere l'implementazione specifica per ciascuno di questi.

    Se servono ulteriori dettagli o chiarimenti, basta chiedere.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it L'avatar di vanzer
    Registrato dal
    Jan 2006
    Messaggi
    12
    Muchas Gracias! Grazie all' ultima risp, il problema è risolto!

    Ciao a tutti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.