Einzelnen Beitrag anzeigen

RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#1

Beim Schließen eines Formulars, wird 2. automatisch geschlossen

  Alt 13. Jun 2010, 16:03
Hallo,

ich habe in einem Projekt einen eigenartigen Fehler. Beim Programmstart wird ein About-Fenster angezeigt, im OnShow-Ereignis des Hauptformulars Daten ausgewertet und das Ergebis in einem Dialog-Formular angezeigt. Dieses wird aber zusammen mit dem About-Fenster wieder geschlossen.
Zur Verdeutlichung hier folgender Beispielcode:
Delphi-Quellcode:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas{Form1},
  Unit4 in 'Unit4.pas{Form4};

{$R *.res}

begin
  Form4 := TForm4.Create(Application);
  Form4.Show;
  Form4.Update;

  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Hauptformular:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
  Showmessage('Test'); // wird zusammen mit Form4 beendet !?!? Wieso?
end;

end.
About-Formular:
Delphi-Quellcode:
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm4 = class(TForm)
    Timer1: TTimer; // schliesst nach 1 sek. das Formular wieder.
    Label1: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TForm4.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  close;
end;

end.
Warum wird ShowMessage in TForm1 beim Schliessen von TForm4 auch geschlossen?
Wenn "Action := caFree; " in TForm4 auskommentiert wird, funktioniert es wie gewünscht.
Aber das Formular muß doch freigegeben werden! Oder?

Kann mir das jemand erklären?

Gruß Klaus
Klaus
  Mit Zitat antworten Zitat