Delphi-PRAXiS

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/)
-   -   Dynamische Erzeugung von Tab Pages und Frames - freigeben? (https://www.delphipraxis.net/171099-dynamische-erzeugung-von-tab-pages-und-frames-freigeben.html)

Vitus 20. Okt 2012 03:23

Dynamische Erzeugung von Tab Pages und Frames - freigeben?
 
Hallo zusammen,

ich beschaeftige mich derzeit mit der dynamischen Erstellung von Tab Pages (benutze die TAdvOfficePager Komponente von TMS). Um meine main form uebersichtlicher zu halten gliedere ich die Inhalte der einzelnen Seiten in Frames aus und erstelle diese dynamisch. Hier ist die entsprechende Prozedur:

Code:
procedure TfrmMain.newView(name: string);
var
  i: integer;
  newPage: TAdvOfficePage;
  newMap: TfraMap;
begin
  i := pagerMain.AdvPageCount;

  // creation of the new tab page:
  newPage := TAdvOfficePage.Create(pagerMain);
  newPage.Parent := pagerMain;
  newPage.Caption := name;
  newPage.ImageIndex := 4;

  // creation of the new frame:
  newMap := TfraMap.Create(newPage);
  newMap.Parent := newPage;
  newMap.Align := alClient;
  newMap.Show;

  pagerMain.AddAdvPage(newPage);
  pagerMain.ActivePageIndex := i;
end;
Meine Frage ist nun was passiert wenn diese dynamisch erzeugte Seite waehrend der Laufzeit wieder geschlossen wird. Wird damit automatisch auch das dynamisch erzeugt frame geloescht oder muss ich mich da manuell drum kuemmern?

Beste Gruesse aus Neuseeland,
Vitus

Sir Rufo 20. Okt 2012 05:00

AW: Dynamische Erzeugung von Tab Pages und Frames - freigeben?
 
Da du dem Frame als Owner (Eigentümer, verantwortlich für die Komponente) die Seite mitgibst reicht es die Seite freizugeben.

nuclearping 20. Okt 2012 07:19

AW: Dynamische Erzeugung von Tab Pages und Frames - freigeben?
 
Zitat:

Zitat von Vitus (Beitrag 1187694)
Um meine main form uebersichtlicher zu halten gliedere ich die Inhalte der einzelnen Seiten in Frames aus und erstelle diese dynamisch.

Ist das nicht etwas zu viel des Guten? "Dynamisch" per Code zu erstellen ist eigentlich 'ne schlechte Idee, da der Verwaltungsaufwand ja exponentiell mit jeder neuen Control steigt. Sei es Wartung, Erweiterung, Änderung, Pflege, ... :pale: ... Ich hab das früher ein Mal gemacht, nie wieder ...

Sir Rufo 20. Okt 2012 07:26

AW: Dynamische Erzeugung von Tab Pages und Frames - freigeben?
 
Zitat:

Zitat von nuclearping (Beitrag 1187701)
Zitat:

Zitat von Vitus (Beitrag 1187694)
Um meine main form uebersichtlicher zu halten gliedere ich die Inhalte der einzelnen Seiten in Frames aus und erstelle diese dynamisch.

Ist das nicht etwas zu viel des Guten? "Dynamisch" per Code zu erstellen ist eigentlich 'ne schlechte Idee, da der Verwaltungsaufwand ja exponentiell mit jeder neuen Control steigt. Sei es Wartung, Erweiterung, Änderung, Pflege, ... :pale: ... Ich hab das früher ein Mal gemacht, nie wieder ...

Wieso sollte es das? Ein passendes Grundgerüst und gut. Allerdings würde ich das Frame anfordern und nicht selber erstellen lassen ;)

Delphi-Quellcode:
TFrameFactory.GetNamedFrame( 'Editor' );
Die Erweiterung betrifft dann die Factory und nicht die Mainform.

nuclearping 21. Okt 2012 12:42

AW: Dynamische Erzeugung von Tab Pages und Frames - freigeben?
 
Willst du damit sagen du bevorzugst das Erstellen und Verwalten aller auf einer Form befindlichen Controls per Code, statt der IDE? :gruebel:

vagtler 21. Okt 2012 14:59

AW: Dynamische Erzeugung von Tab Pages und Frames - freigeben?
 
Weder der Threadersteller noch Sir Rufo haben das behauptet.

nuclearping 21. Okt 2012 16:17

AW: Dynamische Erzeugung von Tab Pages und Frames - freigeben?
 
Stimmt. Hab den Code oben nur überflogen. Beim zweiten Blick sehe ich jetzt auch, dass er nur die Page und einen bereitgestellten Frame erzeugt. Sah auf den ersten Blick halt aus, als ob er die ganzen Controls per Code erstellen wöllte. :stupid:

Vitus 21. Okt 2012 22:28

AW: Dynamische Erzeugung von Tab Pages und Frames - freigeben?
 
Guten Morgen,

vielen Dank fuer die Antworten! Klasse dass Delphi auch dynamisch erzeugte Frames automatisch loeschen kann ich hatte schon befuerchtet dafuer einen Frame-Manager schreiben zu muessen. brrrrrrrr...

@nuclearping: oh entschuldige dass ich nicht deutlich genug war. In der Tat werden nur die Frames mit jedem neuen Tab zur Laufzeit erzeugt! Ich moechte auf die IDE zur GUI Erstellung echt nicht verzichten muessen :lol:

Beste Gruesse,
Vitus

Sir Rufo 21. Okt 2012 23:13

AW: Dynamische Erzeugung von Tab Pages und Frames - freigeben?
 
Das liegt aber nur indirekt an Delphi-Referenz durchsuchenTFrame sondern eher an Delphi-Referenz durchsuchenTComponent, denn davon wurde das irgendwann mal abgeleitet.
Und alles was nach TComponent riecht, kann durch einen optionalen Owner automatisch wieder aus dem Speicher geworfen werden. ;)


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