Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Doppelter FormAufruf! (https://www.delphipraxis.net/60653-doppelter-formaufruf.html)

ColdFire 10. Jan 2006 15:53


Doppelter FormAufruf!
 
Hy leute!

Habe folgendes problem !

Ich möchte eine Form 2 mal aufrufen. Das ist nicht das problem nur wenn ich die eine form beende(Form2.Release;) mache schließt er mir das 2 te fenster auch ...

meine frage wie kann ich ein und das selbe fenster so öffnen und schließen( anderen FormNAME ) ???!
kann ich mir da eine klasse definieren bzw wie mache ich das !

mit besten dank ColdFire

jfheins 10. Jan 2006 16:19

Re: Doppelter FormAufruf!
 
Wie üffnest du denn das Formular ein zweites mal ?

Das müsste so aussehen:
Delphi-Quellcode:
var Form2a: TForm2;

...


Form2a := TForm2.Create;
Form2a.Show;
Das müsste eigentlich gehen ... :gruebel:

dataspider 10. Jan 2006 16:39

Re: Doppelter FormAufruf!
 
Hi,

spätestens an dieser Stelle kann man auf die globalen Formularvariablen verzichten.
MainForm:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(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(Self) do
    Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  with TForm2.Create(Self) do
  begin
    ShowModal;
    Release;
  end;
end;

end.
2. Form
Delphi-Quellcode:
unit Unit2;

interface

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

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

// var
  // Form2: TForm2;

implementation

{$R *.dfm}

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

end.
Wenn du allerdings das Form von aussen schliessen musst, musst du auch deine Forma selbst in einem Controller handeln.
Dafür gibt es auch reichlich Beispiele.

Cu, Frank

ichbins 10. Jan 2006 17:08

Re: Doppelter FormAufruf!
 
einfach in der Unit wo die Variable für form1 deklariert ist noch eine weitere solche variable dazuschreiben:

Delphi-Quellcode:
var
  form1: tform1;
  //neu
  form2: tform1;
und dann
Delphi-Quellcode:
  form2:=tform1.create(application);
  form2.dosomething;
form1 ist aber immer noch das Hauptformular der Anwendung (application.mainform), d.h. wenn es beendet wird, dann wird die ganze Anwendung beendet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz