AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TPanel Visible := True wirkt nicht in TabSheet OnShow
Thema durchsuchen
Ansicht
Themen-Optionen

TPanel Visible := True wirkt nicht in TabSheet OnShow

Ein Thema von Graf Gustav · begonnen am 5. Feb 2019 · letzter Beitrag vom 6. Feb 2019
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von blawen
blawen

Registriert seit: 30. Nov 2003
Ort: Luterbach (CH)
710 Beiträge
 
Delphi 12 Athens
 
#1

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 06:36
Ich hatte jetzt nur Delphi2006 zur Hand, aber da funktioniert es
Jein, in diesem Beispiel ist das Panel nicht im Tabsheet, sondern auf der Form.
Sobald es im Tabsheet abgelegt wird, tritt besagtes "Problem" auf.
Roland
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
576 Beiträge
 
Delphi XE2 Professional
 
#2

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 06:37
Ups, hast Recht. Nicht aufgepasst
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 07:37
Ich kann den Effekt reproduzieren. Als Workaround habe ich es im FormShow zusätzlich eingebaut:

Delphi-Quellcode:
procedure TfrmTesterMain.FormShow(Sender: TObject);
begin
  Panel1.Visible := (PageControl1.ActivePage = TabSheet1);
end;
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Graf Gustav

Registriert seit: 13. Mär 2011
51 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 08:40
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.
Reinhold
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 08:44
Gut zu wissen!
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#6

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 08:46
@graf gustav: Warum nicht einfach so, wie ich bereits schrieb:
Delphi-Quellcode:
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?
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
576 Beiträge
 
Delphi XE2 Professional
 
#7

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 08:53
Da finde ich aber die startprocedure wie blawen Sie vorgeschlagen hat besser.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#8

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 08:59
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.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#9

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 07:55
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":
Delphi-Quellcode:
procedure TForm1.PageControl1Change(Sender: TObject);
begin
  if Pagecontrol1.ActivePage = Tabsheet2 then
    Panel1.Show
  else
    Panel1.Hide;
end;
Wenn so etwas für mehrere Seiten gemacht werden muss, kannst du anstatt if auch case nutzen. Mir stellt sich nur noch die Frage nach dem Sinn, da das Panel doch nur sichtbar ist, wenn die Seite auch angezeigt wird oder übersehe ich da etwas!?
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas ( 6. Feb 2019 um 08:02 Uhr)
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
576 Beiträge
 
Delphi XE2 Professional
 
#10

AW: TPanel Visible := True wirkt nicht in TabSheet OnShow

  Alt 6. Feb 2019, 08:16
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:58 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