Autor Beitrag
Flash106
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: Do 31.03.05 20:19 
Hallo,

1. Wie kann ich ein formular dynamisch erzeugen wenn ich auf einen Button klicke?
2. Ich möchte immer wieder auf den Button klicken und ein neues Formular erzeugen können, aber danach auch jedes formular einzeln ansprechen können.
3. Ich möchte, wenn ich auf einen anderen Button klicke, das sich dann alle formular schließen.

Wie realisiere ich sowas am besten???
Danke im vorraus... :)
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Do 31.03.05 20:35 
Flash106 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: Do 31.03.05 21:02 
hm.. das doofe ist das ich immer ein und das selbe formular damit erzeuge... ich brauche aber unterschiedlichte. Wenn ich z.b. eine button drauf tue der ein info fenster zeigt darf das nicht bei allen forms sein. ich brauch keine instanz vom hauptformular sonder eigenständige formulare...
der_zaehe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

WinXP SP2
D6 Pers, D2005 Prof, VS2005
BeitragVerfasst: Do 31.03.05 21:02 
ich bin auch erst kürzlich dahinter gekommen, wie das geht und habe das problem auf meine art und weise gelöst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
...
private
  FensterListe : TStringList;´
...

procedure TForm1.FormCreate(Sender: TObject);
begin
  FensterListe := TStringList.Create;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Form2 : TForm2;
begin
  Form2 := TForm2.Create(self);
  Form2.Show;                                    // Weiß net ob das nötig ist, aber schaden kanns net
  FensterListe.AddObject('Bla',Form2);
end;

procedure TForm1.Button2Click(Sender: TObject);  // Alle Forms der Reihe nach schliessen.
var
  i : Integer;
begin
  for i := 0 to FensterListe.Count-1 do
    TForm2(FensterListe.Objects[i]).Close;       // Typenumwandlung net vergessen
end;


ich hab den Code jetzt net getestet aber so ähnlich hat der bei mir funktioniert.
das Application.CreateForm lass für dein dynamisch erstelltes Formular am besten ganz weg.

du kannst die einzelnen Formulare auch unterscheiden, indem du sie unter verschiedenen Namen in die TStringList einträgst. Dann kannst du mit
ausblenden Delphi-Quelltext
1:
TForm2(FensterListe.Objects[FensterListe.IndexOf(<Name des Fensters, von dir vergeben>)])					

auf das gewünschte Fenster zugreifen.


ich hoff ich hab dich jetz net missverstanden und du meinst das dynamische Erzeugen unterschiedlicher Formulare.

_________________
[inspirationslos]
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Do 31.03.05 21:11 
user profile iconder_zaehe hat folgendes geschrieben:
ich bin auch erst kürzlich dahinter gekommen, wie das geht und habe das problem auf meine art und weise gelöst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
...
private
  FensterListe : TStringList;´
...

procedure TForm1.FormCreate(Sender: TObject);
begin
  FensterListe := TStringList.Create;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Form2 : TForm2;
begin
  Form2 := TForm2.Create(self);
  Form2.Show;                                    // Weiß net ob das nötig ist, aber schaden kanns net
  FensterListe.AddObject('Bla',Form2);
end;

procedure TForm1.Button2Click(Sender: TObject);  // Alle Forms der Reihe nach schliessen.
var
  i : Integer;
begin
  for i := 0 to FensterListe.Count-1 do
    TForm2(FensterListe.Objects[i]).Close;       // Typenumwandlung net vergessen
end;


ich hab den Code jetzt net getestet aber so ähnlich hat der bei mir funktioniert.
das Application.CreateForm lass für dein dynamisch erstelltes Formular am besten ganz weg.

du kannst die einzelnen Formulare auch unterscheiden, indem du sie unter verschiedenen Namen in die TStringList einträgst. Dann kannst du mit
ausblenden Delphi-Quelltext
1:
TForm2(FensterListe.Objects[FensterListe.IndexOf(<Name des Fensters, von dir vergeben>)])					

auf das gewünschte Fenster zugreifen.


ich hoff ich hab dich jetz net missverstanden und du meinst das dynamische Erzeugen unterschiedlicher Formulare.


Wär's nicht einfacher, nur eine TList zu nehmen? TStringList ist für den Anwendungsfall nicht unbedingt notwendig.

AXMD
der_zaehe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

WinXP SP2
D6 Pers, D2005 Prof, VS2005
BeitragVerfasst: Do 31.03.05 21:18 
mist
stimmt :)
an den object-typ hab ich grad gar net gedacht. ich programmier noch net soo lange (3/4 jahr?) und hab dem entsprechend delphi-erfahrung :D
also: TList statt TStringList

_________________
[inspirationslos]
cutelaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27

Win XP Prof
D5 Prof, D7 Prof, D9 Prof
BeitragVerfasst: Fr 01.04.05 08:43 
joa, nimmm auf alle fälle TList. und beim button 2 sollteste die formulare auch wieder freigeben, die verbraten sonst weiterhin speicher. oder in einer liste merken und bei button1 drauf prüfen, und ggf. die bereits vorhandenen unbenutzten forms wieder verwenden.
der_zaehe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

WinXP SP2
D6 Pers, D2005 Prof, VS2005
BeitragVerfasst: Fr 01.04.05 22:30 
ach, deshalb musste ich mich immer wundern, warum meine programme in laufzeit immer mehr arbeitsspeicher verbraucht haben user defined image

_________________
[inspirationslos]
Muetze1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 346



BeitragVerfasst: Sa 02.04.05 22:58 
Moin!

Und warum nicht gleich eine TObjectList?? Und wenn du OwnsObjects auf True lässt, dann wird das Formular beim Delete() sogar automatisch freigegeben...

MfG
Muetze1
der_zaehe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

WinXP SP2
D6 Pers, D2005 Prof, VS2005
BeitragVerfasst: So 03.04.05 12:51 
irre! das brauch ich! user defined image
zur erklärung: ich bin anfaenger und noch nicht über alle kompos und objekt-typen informiert.

_________________
[inspirationslos]
Muetze1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 346



BeitragVerfasst: So 03.04.05 14:26 
Moin!

user profile iconder_zaehe hat folgendes geschrieben:
zur erklärung: ich bin anfaenger und noch nicht über alle kompos und objekt-typen informiert.


Ging auch eher in Richtung AXMD, der das ganze vorgeschlagen hatte. Es war nicht in Bezug auf dich gemeint.

MfG
Muetze1