Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Moombas,
6. Feb 2019
Ich habe mich dabei auf folgendes bezogen:
Beispielprojekt in diesem Falle das von v2afrank!
@Graf Gustav: Aber dennoch funktioniert es wie in Beitrag #18 geschrieben (funktionierendes Beispielprojekt im Anhang).
Weitere Hinweise in den folgenden Beiträgen:
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Moombas,
6. Feb 2019
Nein, es macht keinen Sinn das Panel per default auszublenden, das Sheet beim Start als "Startsheet" anzuzeigen und sich dann zu beschweren, dass das Panel beim Programmstart nicht eingeblendet wird, obwohl es im onShow-Event gezeigt werden soll.
Einzige Ausnahme, es gibt Abhängigkeiten aber dann setze ich die Abhängigkeitsprüfung eher z.B. in das OnCreate-Event und nicht ins onShow-Event (was...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Moombas,
6. Feb 2019
Weil das Tabsheet als default visible = false beim start hat. Ansonsten macht es ja auch keinen Sinn! Du stellst ja das visible auf false im Objektinspector damit das Panel (oder was auch immer) beim Programmstart NICHT sichtbar ist. Nun willst du aber das beim Programmstart es über das Show-Event doch sichtbar wird. Das beißt sich.
Ich glaube das es WaD (Works as designed) ist, da beim...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Moombas,
6. Feb 2019
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:
procedure TForm1.Button1Click(Sender: TObject);
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Moombas,
6. Feb 2019
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.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Moombas,
6. Feb 2019
@graf gustav: Warum nicht einfach so, wie ich bereits schrieb:
procedure TForm1.PageControl1Change(Sender: TObject);
begin
if Pagecontrol1.ActivePage = Tabsheet2 then
Panel1.Show
else
Panel1.Hide;
end;
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?
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Moombas,
6. Feb 2019
Hast du recht, dann verstehe ich das Verhalten auch nicht.
Und ich ergänze das Phänomen: Wenn ich in dem Tabsheet, in dem das Panel liegt, auch einen Button einfüge, der sichtbar ist und folgenden Code beinhalten:
procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.Show;
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Moombas,
6. Feb 2019
Es ist ganz logisch, da das Show-Event nur ausgelöst wird, wenn der Tab "wieder eingeblendet" wird (Tabsheet.show). Wenn ich das gleiche auf z.B. onMouseActivate lege und in die leere Fläche Klicke wird der Code ausgeführt.
Das Problem liegt also nicht darin, das das Panel im Sheet liegt, sondern die Art und Weise des Aufrufs.
Du kannst das ganze so "umgehen":
procedure...