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.
Ist aber nicht richtig. Das Showevent wird sehr wohl ausgelöst. Setz einfach mal die Fenstercaption und Du wirst sehen es wird ausgelöst
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:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.Show;
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
Panel1.Show;
end;
Wird beim einblenden des Tabsheet der Button versteckt (sowie auch alle anderen Komponenten auf dem Sheet)!? (Ein Druck auf den Button hat keinen Effekt)
Kommentiere ich nun das Show-Event aus, bleiben alle Komponenten Sichtbar und der Button funktioniert (blendet das Panel ein).
Nutze ich nun anstatt ".show" folgendes:
Delphi-Quellcode:
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
Panel1.Visible := True;
end;
Funktioniert es einwandfrei! Warum es bei dir jedoch so nicht funktioniert, kann ich dir nicht sagen. Auch war für mich bisher ".visible := True" = ".show" bzw ".visible := False;" = ".hide". Da scheint es auch noch Unterschiede zu geben.