Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Dynamisch erzeugtes Frame auf TabSheet erst nach Aktualisierung sichtbar (https://www.delphipraxis.net/178481-dynamisch-erzeugtes-frame-auf-tabsheet-erst-nach-aktualisierung-sichtbar.html)

Headbucket 10. Jan 2014 09:58

Delphi-Version: XE5

Dynamisch erzeugtes Frame auf TabSheet erst nach Aktualisierung sichtbar
 
Hallo,

ich stehe gerade vor einem Problem und weiß nicht so recht weiter:
Ich habe ein PageControl auf welchem dynamisch mehrere TabSheets erzeugt werden
Delphi-Quellcode:
for i := 0 to 6 do
begin
  FTabSheetList[i] := TTabSheet.Create(PageControl1);
  FTabSheetList[i].PageControl := PageControl1;
end;
Danach möchte ich auf jedem TabSheet ein Frame erzeugen:
Delphi-Quellcode:
if PageControl1.Pages[0].Visible then
begin
  Fxyz := TFrame.Create(self);
  Fxyz.Name := 'xyz';
  Fxyz.Parent := FTabSheetList[0];
  Fxyz.Align := alClient;
end;
Wenn ich nun das Projekt starte und das Formular mit dem PageControl öffne sehe ich das dynamisch erzeugte Frame innerhalb des TabSheets nicht. Klicke ich dann auf ein anderes Tab und wieder zurück ist es auf einmal da.

Was ich schon probiert habe:
Fxyz.Show;
Fxyz.visible;
PageControl1.ActivePage := PageControl1.Pages[0];

Es spielt auch keine Rolle, wo ich die Frames dynamisch erzeuge (ob Konstructor des Formulars oder später).
Hat hier vllt jemand eine Idee?

Ich habe dann testweise z.B. versucht nacheinander "PageControl1.ActivePage" verschiedene Seiten zuzuweisen. Hier hat er dann z.B. die "visible"-Eigenschaft der ersten Seite auf "false" gesetzt, wenn ich "PageControl1.ActivePage := PageControl1.Pages[3];" gesetzt habe. Das versteht ich auch irgendwie nicht :S

Ich hoffe mir kann jemand helfen.

Grüße
Headbucket

mkinzler 10. Jan 2014 10:02

AW: Dynamisch erzeugtes Frame auf TabSheet erst nach Aktualisierung sichtbar
 
Ein Redraw des heets sollte eigentlich ausreichend sein.

Headbucket 10. Jan 2014 10:08

AW: Dynamisch erzeugtes Frame auf TabSheet erst nach Aktualisierung sichtbar
 
Ein Refresh und ein Repaint des PageControls bzw. des einzelnen TabSheets bringt leider auch keine Besserung.

Headbucket 10. Jan 2014 10:19

AW: Dynamisch erzeugtes Frame auf TabSheet erst nach Aktualisierung sichtbar
 
Hm. Es liegt auf jeden Fall daran, dass ich die TabSheets vorher alle auf visible setze:
Delphi-Quellcode:
for i := 0 to PageControl1.PageCount - 1 do
  PageControl1.Pages[i].Visible := true;
Lass ich diese zwei Zeilen weg dann zeigt er mir die erzeugten Frames korrekt an.

Führ ich obrigen Code nach der dynamischen Erzeugung aus klappt es wieder nicht... .

Es ist aber wichtig, dass ich die Sichtbarkeit setze, da sie sonst total zufällig gesetzt werden.


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