Olá pessoal,
Se você usa ShowModal (O código do exemplo está no link: 
http://www.4shared.com/dir/5679510/48848609/Uploads.html procure o arquivo 
ModalForms):
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
resourcestring
  OpenModalFormErr = 'O formulário "%s" já esta carregado '+
    'na memória, caso o mesmo não seja visível reinicie o %s.';
var
  Form1: TForm1;
implementation
{$R *.dfm}
uses
  Unit2;
procedure ModalForms(var AForm: TForm; AFormClass: TFormClass;
  ACaption: TCaption);
begin
  if AForm = nil then
    begin
      Screen.Cursor := crHourGlass;
      AForm := AFormClass.CreateParented(
        GetParent(Application.Handle));
      try
        with AForm do
          begin
            Caption := ACaption;
            Position := poScreenCenter;
            ShowModal;
          end;
      finally
        AForm.Free;
        AForm := nil;
        Screen.Cursor := crDefault;
      end;
    end
  else
    MessageDlg(Format(OpenModalFormErr, [ACaption,
      Application.Title]), mtError, [mbOK], 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  ModalForms(TForm(Form2), TForm2, Form1.Button1.Caption);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//  ReportMemoryLeaksOnShutdown := True;
end;
end.


----- Mensagem original ----
De: Yoshio <[EMAIL PROTECTED]>
Para: Delphi-BR <delphi-br@yahoogrupos.com.br>
Enviadas: Quinta-feira, 28 de Agosto de 2008 12:20:19
Assunto: [delphi-br] Form := nil automático no OnClose


Olá pessoal.
Estava fazendo um form para ser herdado, porem não consegui fazer com
que os forms descendentes se "auto-liberar" da memória. Para cada form
descendente eu tenho que colocar este código no OnClose:
------------ --------- -------
Action := caFree;
FormDescendente1 := nil; // ou FormDescendente2, FormDescendente3. ..
------------ --------- -------

É praticamente o mesmo código em todos os forms descendentes. Não há
uma maneira de fazer isto automático, como algum código no OnClose do
form herdado que faz isso automaticamente?

Obrigado.
 


      Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]

Reply via email to