Announcement

Collapse
No announcement yet.

Close innerhalb von FormCreate

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Close innerhalb von FormCreate

    Hallo,

    ich versuche, ein Formular innerhalb der Methode Formcreate wieder zu
    schliessen (in Abhängigkeit einer Bedingung). Schaffe dies aber nicht. Es erscheint immer eine Zugriffs-
    verletzung. Ich habe mittels Hilfsvariablen auch innerhalb von FormActivate
    versucht, das Formular zu schliessen. Hat aber auch nicht geklappt.
    Vielleicht weiss jemand einen Weg.
    Gruß Michael

  • #2
    Willst Du das ganze Programm schließen oder nur eine From? Wenn Du das ganze Programm beenden willst, dann Probier es mal Application.Terminate weis aber nicht ob das Funktioniert.
    Was Du auch probieren kannst: Prüfe einfach vor dem create ob Du die Form erzeugen willst oder nicht

    Comment


    • #3
      Hallo Michael,schicke dem Form innerhalb des OnCreate-Handlers ne Message. PostMessage(Handle,WM_CLOSE,0,0). Das klappt. <br>:-) Jens Schuman

      Comment


      • #4
        Hallo,
        danke für die Hilfe. Das Schließen des Formulars ist dann auch
        in Ordnung. Aber mein Hauptformular verliert dann den Fokus. Das
        Programm ist noch gestartet, aber es wird nicht mehr aktiv, wenn ich
        mit der Maus daraufklicke. Ich muß dann das Programm abschiessen.
        TForm1.setfocus vor der PostMessage brachte keinen Erfolg. Vielleicht
        weiss jemand, wie ich das hinbekommen kann

        Comment


        • #5
          Hallo Michael,<br>habe keine Probleme. Hier ist mein Code:
          <pre><font size="1" face="Verdana">
          unit Unit1;

          interface

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

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

          var
          Form1: TForm1;

          implementation

          uses Unit2;

          {$R *.DFM}

          procedure TForm1.Button1Click(Sender: TObject);
          begin
          With TForm2.Create(Application) do
          begin
          Try
          ShowModal;
          Finally
          Release;
          end;
          end;
          end;

          end.

          unit Unit2;

          interface

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

          type
          TForm2 = class(TForm)
          procedure FormCreate(Sender: TObject);
          procedure FormClose(Sender: TObject; var Action: TCloseAction);
          private
          { Private-Deklarationen }
          public
          { Public-Deklarationen }
          end;

          var
          Form2: TForm2;

          implementation

          {$R *.DFM}

          procedure TForm2.FormCreate(Sender: TObject);
          begin
          PostMessage(Handle,WM_CLOSE,0,0);
          end;

          procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
          begin
          Action:=caHide;
          end;

          end.
          </font></pre>
          <br>:-) Jens Schuman

          Comment

          Working...
          X