Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Formular mehrmals öffnen (https://www.delphipraxis.net/150958-formular-mehrmals-oeffnen.html)

bezarre 1. Mai 2010 14:06


Formular mehrmals öffnen
 
Hallo,

ich habe ein Formular das man mehrmals öffnen können soll.
Bisher habe ich das immer so gemacht:

Delphi-Quellcode:
procedure TForm2.Umbennen1Click(Sender: TObject);
begin
  Form6.load_alias(ListView1.ItemIndex);
  Form6.Show;
end;
Aber so wird das Fesnter ja immer wieder überschrieben. Es soll aber jedes Mal ein neues geöffnet werden. Wie mach ich das.

Gruß
Micha

himitsu 1. Mai 2010 14:11

Re: Formular mehrmals öffnen
 
In Form6 steckt eine automatisch erzeugte Instanz deines Formulars TForm6
und dieses kann nur einmal angezeigt werden.

Willst du dieses Formular mehrmals gleichzeitig anzeigen, dann mußt du dir auch mehrere Instanzen erzeugen.

Delphi-Quellcode:
var F: TForm6;

F := TForm6.Create(...);
F.Show;

F.Free;
Statt F kannst du z.B. ein Array oder irgendeine andere (Object)Liste nehmen, um mehrere Instanzen zu speichern.

bezarre 1. Mai 2010 14:13

Re: Formular mehrmals öffnen
 
Hallo,

dankeschön :-)

Hier wird man ja richtig gebildet.

Gruß
Micha

bezarre 1. Mai 2010 14:22

Re: Formular mehrmals öffnen
 
Hallo,

irgendwie passt das aber doch noch nicht so ganz.

Delphi-Quellcode:
procedure TForm2.Umbennen1Click(Sender: TObject);
begin
  umbenennen[ListView1.ItemIndex] := TForm6.Create(self);
  umbenennen[ListView1.ItemIndex].load_alias(ListView1.ItemIndex);
  umbenennen[ListView1.ItemIndex].Show;
end;
So sieht das jetzt bei mir aus. Ich kann zwar jetzt mehrere Fenster öffnen, aber die an load_alias übergebene ID verändert sich jedes mal beim öffnen eines neuen Fensters.

Soll heißen, ich öffnen ein Fenster(F1) und übergebe die ID 4, dann öffnen ich ein weiteres Fenster(F2) und übergebe 9. Nun hat F1 auch die ID 9.
Wie kann ich das ändern?

Load Alias speichert die ID einfach nur in einer globalen Variable von Form6 ab.

Gruß
Micha

DeddyH 1. Mai 2010 14:27

Re: Formular mehrmals öffnen
 
Zitat:

Zitat von bezarre
Load Alias speichert die ID einfach nur in einer globalen Variable von Form6 ab.

Damit hast Du doch indirekt bereits die Antwort gegeben. Mach aus der globalen Variablen eine Property des Forms, dann hat jede Instanz ihre eigene ID.

bezarre 1. Mai 2010 14:33

Re: Formular mehrmals öffnen
 
Hallo,

mit Propertys habe ich mich bisjetzt noch garnicht beschäftigt, aber danke. Es klappt damit :-)

Gruß
Micha


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 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