![]() |
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
Danke euch für die Hinweise.
Entscheidend ist der Pagewechsel. Denn ausgelöst wird das TabShow-Ereignis durchaus initial, die Visible-Anweisung wird auch durchlaufen, das Panel ändert auch seinen Visible-Status, es bewirkt nur nichts. (Auch kein ProzessMessages und kein Repaint etc. hilft...) Es schaudert mich zwar ein bisschen, aber das ist mein Workaround: PageControl bekommt eine zweites (der Ordnung halber ist es dann die erste) TabSheet mit TabVisible = False, das ist die ActivePage beim Start. In dem OnShow-Ereignis des Fensters wird dann ActivePage auf 1 gesetzt. Dann gehts. |
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
Gut zu wissen!
|
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
@graf gustav: Warum nicht einfach so, wie ich bereits schrieb:
Delphi-Quellcode:
Dann brauchst du kein zusätzliches Tabsheet oder ähnliches. Und bei mir hats ja im Test funktioniert, hast du mal ein Projekt nur mit den Komponenten gemacht zum Testen?
procedure TForm1.PageControl1Change(Sender: TObject);
begin if Pagecontrol1.ActivePage = Tabsheet2 then Panel1.Show else Panel1.Hide; end; |
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
Da finde ich aber die startprocedure wie blawen Sie vorgeschlagen hat besser.
|
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
Im Endeffekt muss es jeder selber wissen, viele Wege führen nach Rom. Nichts desto Trotz funktioniert bei mir das Einblenden des Panels wenn man mit ".visible" arbeitet im onShow Event Problemlos.
|
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
Ich kann den Fehler nicht reproduzieren. Das Panel wird im OnShow sichtbar. Getestet in Delphi 2009 Pro und Turbo Delphi 2006 Pro.
Delphi-Quellcode:
TForm1 = class(TForm)
PageControl1: TPageControl; Button1: TButton; TabSheet1: TTabSheet; TabSheet2: TTabSheet; Panel1: TPanel; procedure TabSheet2Show(Sender: TObject); procedure Button1Click(Sender: TObject); ... procedure TForm1.Button1Click(Sender: TObject); begin panel1.Visible := False; panel1.Visible := True; end; procedure TForm1.TabSheet2Show(Sender: TObject); begin panel1.Visible := True; end; |
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
Auch mit meinem Beispielprojekt ?
Vergiss es das war ja falsch |
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
Liste der Anhänge anzeigen (Anzahl: 1)
Zu deinem Beispiel Projekt:
1. Liegt das Panel nicht im Sheet -> korrigiert 2. Packe mal eine zweite Seite zum Pagecontrol hinzu 3. Wechsel die Seiten und siehe da, das Panel erscheint! Siehe Anhang. Und wenn man das Panel per Button ein-/ausblenden möchte geht (nur als Beispiel) folgendes:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if Panel1.Visible = True then Panel1.Visible := False else Panel1.Visible := True; end; |
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
Ich hab jetzt nochmal was ausprobiert. Wenn das Panel auf dem TabSheet liegt das beim Start der Anwendung sichtbar ist. Wird das Panel tatsächlich nicht sichtbar.
|
AW: TPanel Visible := True wirkt nicht in TabSheet OnShow
Zitat:
Ich glaube das es WaD (Works as designed) ist, da beim Seitenwechsel der ".visible := True;" korrekt ausgeführt ist und dein Problem nur beim Programmstart besteht, was du aber mit deiner Einstellung im Objektinspektor selber ABSICHTLICH so eingestellt hast!? Fazit: Willst du das das Panel sofort sichtbar ist bei Programmstart: Visible per default auf True setzen (oder z.B. beim onCreate-Event einblenden, wenn es Abhängigkeiten dafür gibt). Willst du das Panel während der Laufzeit einblenden: z.B. beim onShow-Event ".visible := true" setzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 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