![]() |
PageControl, Child-Controls verschwinden ...
... beim Resizen der Form.
Hallo Leute. Ich habe zwei PageControls. In einem steckt ein TTreeView, im anderen ein Memo/RichEdit. Wenn ich die Form verschiebe, ist alles okay. Sobald ich sie aber vergrößere, verkleinere oder maximiere, sind die Controls verschwunden, und ich sehe nur noch die scheinbar leeren Tabsheet-Seiten. Ist aber noch alles da, denn die Knotenpunkt des TTreeView sind noch erkennbar, und beim Aufklappen "restauriert" sich das Control dann auch, und sobald ich einen Eintrag auswähle, erscheint im Memo/RichEdit auch der entsprechende Text. Ich hab´s versucht mit Application.ProcessMessages, und mit "Update"-Aufrufen der PageControls, der aktiven Seiten und der Child-Controls (nacheinander, nie zusammen!) Gebracht hat´s nichts. Weiß jemand, was das für eine Merkwürdigkeit ist und welche Ursache sie hat? Gruß, Mathias. |
Gib doch mal einen Einblick in die Definition der Klasse des Forms. Es hört sich durchaus ein wenig seltsam an. Hast Du irgendwelche Ereignisse oder Nachichten abgefangen und vielleicht "verschluckt"?
...:cat:... |
Nee, da sind keine besonderen Nachrichten, sakura.
Ich habe einfach nur das PageControl auf die Form gepackt, eine Seite angelegt und einen TreeView reingehauen. Das war´s. Nur das andere PageControl legt die Seiten dynamisch an. Eine wird beim Start wie folgt erstellt:
Code:
Ich hätt´s u.U. ja auch auf darauf geschoben, dass ich beim dynamischen Anlegen der Seiten was falsch gemacht habe. Wenn aber nicht mal das oben erwähnte, normal erstellte und immer vorhandene PageControl/TreeView funktioniert ... :?
// create 1st page
ntab := TTabSheet.Create(PageControl1); ntab.Visible := true; ntab.Caption := 'Testseite'; ntab.PageControl := PageControl1; PageControl1.ActivePage := ntab; nrich := TRichEdit.Create(ntab); nrich.Parent := ntab; nrich.Align := alClient; nrich.Visible := true; nrich.PlainText := true; nrich.Font.Name := 'Courier New'; nrich.Font.Size := 10; nrich.ScrollBars := ssBoth; Ich werde mal schauen, ob das was mit dem XP-Patch der "ComCtrl.pas" zu tun hat. Du weißt schon, da gab´s doch diese Änderungen für die TListView, damit´s unter XP funktioniert. Ich kann mich zwar nicht entsinnen, irgendwas am PageControl geändert zu haben, aber das ist auch schon ´ne Weile her. Möglich, dass ein vermeintlicher XP-Patch dieses Problem verursacht. <Edit> Tatsächlich! Da stecken sie:
Code:
Dass ich mich daran nicht mehr erinnern konnte, gibt mir zu denken ... :cry: ... Na egal. Wenn ich diese Patches auskommentiere, tritt das Verschwinden der Child-Controls nicht mehr auf.
procedure TTabSheet.UpdateTabShowing;
begin SetTabShowing((FPageControl <> nil) and FTabVisible); // WinXP patch SetWindowLong(handle,GWL_EXSTYLE,WS_EX_TRANSPARENT); end; procedure TPageControl.Loaded; var i : integer; begin inherited Loaded; UpdateTabHighlights; // WinXP patch for I:=self.PageCount-1 downto 0 do self.ActivePage:=self.Pages[I]; end; Aber irgendeinen Sinn müssen die Änderungen doch gehabt haben, denn grundlos schreibe ich doch nicht Web-Tipps in meine Units rein. Ich hab das Programm gerade mal unter XP mit aktivem LUNA probiert. Probleme gab´s aber nicht. Hm ... :? </Edit> |
Hast Du nur mal einen von den beiden "auskommentiert" - welcher verursacht das Problem :?:
...:cat:.. |
Allem Anschein nach ist es der erste Patch mit der "SetWindowLong"-Anweisung. In der technischen Beschreibung aus Delphi3000.com heißt es dazu:
Zitat:
Der zweite Patch verursacht auf den ersten Blick erst mal nicht dieses Problem. Ich denke mal, mit Delphi 7 dürften solche User-Fixes ohnehin der Vergangenheit angehören. Immerhin wirbt Borland ja mit der kompletten Unterstützung der XP-Themes. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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