![]() |
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:
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....?!!
var
xyz : TformX; begin xyz := tformX.create(...); ... Oder gibts ne ganz andere, bessere Lösung? Grüße Flo |
Re: Mehrmals die gleiche Form erstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
freigeben kannst Du denn Speicher auch im .OnClose eines Fensters. Einfach:
Delphi-Quellcode:
Schaue Dir mal das Beispiel im Anhang an.
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin Action := caFree; end; |
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))
|
Re: Mehrmals die gleiche Form erstellen
oh, danke :)
Dann mach ich das so, is ja richtig easy :) |
Re: Mehrmals die gleiche Form erstellen
ah eine Frage noch: wie kann ich denn dann von einer anderen Form dadrauf zugreifen? geht das überhaupt?
|
Re: Mehrmals die gleiche Form erstellen
FindComponent :)
|
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) |
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? |
Re: Mehrmals die gleiche Form erstellen
eventuell weil das Mainform auch "fsstayonTop" ist? und diese somit hinter diesem verschwinden?
|
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 01:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz