Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mehrmals die gleiche Form erstellen (https://www.delphipraxis.net/30053-mehrmals-die-gleiche-form-erstellen.html)

Florian H 19. Sep 2004 09:29


Mehrmals die gleiche Form erstellen
 
Hi,

ich habe ein Programm, das mehrmals das selbe Fenster öffnen soll nur halt anderer Inhalt.
Also wie ICQ , da klicke ich einen Eintrag in der ContactList an und es öffnet sich ein neues Gesprächsfenster... das kann ich für jeden Eintrag so machen.
Genau sowas will ich auch. Mir gehts dabei (erstmal) um den Lösungsansatz...

Geht das vielleicht per MDI, dass ich da die Fenster irgendwie aus dem MDI-Container vielleicht rausbekomme?
Oder muss ich umständlich ein dynamisches Array of TFormX machen und da dann die Forms erzeugen und anzeigen? Das wäre umständlich wenn man eines wieder schließt und ich im Array das löschen müsste und den rest dann wieder veeschieben etc... nicht so praktisch/schnell/bugsicher ...
Oder kann ich sowas machen:
Delphi-Quellcode:
var
  xyz : TformX;
begin
  xyz := tformX.create(...);
...
und das dann einfach mehrmals aufrufen? Geht ja auch, aber irgendwie erscheint mir das bissl zweifelhaft weil ich da ja nicht mehr freigebe und so....?!!

Oder gibts ne ganz andere, bessere Lösung?

Grüße
Flo

Sharky 19. Sep 2004 09:40

Re: Mehrmals die gleiche Form erstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Florian H
... weil ich da ja nicht mehr freigebe und so..

Hai Flo,

freigeben kannst Du denn Speicher auch im .OnClose eines Fensters. Einfach:
Delphi-Quellcode:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;
Schaue Dir mal das Beispiel im Anhang an.

SirThornberry 19. Sep 2004 09:41

Re: Mehrmals die gleiche Form erstellen
 
wer sagt das du die Forms in einem Array speichern musst? Du kannst auch einfach im onClose des Forms dafür sorgen das es freigegeben wird. Oder du nimmst eine TList zur Verwaltung dann brauchst du dich nicht um die Verschiebung kümmern wenn ein Fenster gelöscht wird (einfach TListObject.Delete(Index) und fertig ist das ganze (natürlich noch das Destroy auslösen))

Florian H 19. Sep 2004 09:41

Re: Mehrmals die gleiche Form erstellen
 
oh, danke :)
Dann mach ich das so, is ja richtig easy :)

Florian H 19. Sep 2004 10:15

Re: Mehrmals die gleiche Form erstellen
 
ah eine Frage noch: wie kann ich denn dann von einer anderen Form dadrauf zugreifen? geht das überhaupt?

phXql 19. Sep 2004 10:40

Re: Mehrmals die gleiche Form erstellen
 
FindComponent :)

SirThornberry 19. Sep 2004 10:54

Re: Mehrmals die gleiche Form erstellen
 
FindComponent ist so ziemlich die unperfomanste Variante. Speicher einfach beim erstelle des Forms das ganze in einer TList und dann kannst du über das Item der TList auf das Fenster zugreifen
(TYourFormClass(Liste.Item[Index]).Methode)

Florian H 19. Sep 2004 10:57

Re: Mehrmals die gleiche Form erstellen
 
hm stimmt so gehts dann auch :)

Und eine letzte Frage (da lohnt sich nunmal ein neuer Thread net...):
Die Forms gehen bei mir immer in den Hintergrund, obwohl ich fsStayOnTop anhabe, woran kann das liegen?

SirThornberry 19. Sep 2004 11:01

Re: Mehrmals die gleiche Form erstellen
 
eventuell weil das Mainform auch "fsstayonTop" ist? und diese somit hinter diesem verschwinden?

Florian H 19. Sep 2004 11:02

Re: Mehrmals die gleiche Form erstellen
 
Ne, beide Forms verschwinden hinter anderen Fenstern, wenn die den Focus bekommen. und die anderen Fenster sind keine StayOnTops.

edit: wenn ich aber dem MainForm fsStayontop gebe, dann gehts... will ich aber eigentlich nicht weil das verschwinden soll


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.
Seite 1 von 2  1 2      

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