Właściwość visible = True a komponentu nie widać

0

Opiszę w jakiej sytuacji występuje problem:

Na formie mam Komponent PageControl z klikoma zakładkami. nad komponentem PageControl mam zwykły TPanel. Jak włączam program Panel.Visible ustawione jest na True. Następnie w każdym ze zdarzeń TabShow (Każdej zakładki) jest mniej więcej taka procedura:\

begin
  Panel.Visible := False;
  {dodawanie i ukrywanie przycisków w zależności od zakładki którą wybrano}
   
  //I na koniec zpowrotem wyświeltenie Panelu tzn. 
  Panel.Visible := True;
end;

Jak włączę program na nic nie klikając to wykonuje się TabShow zakładki która była aktywna w czasie tworzenia kodu natomiast Panel jest nie widoczny pomimo iż jego właściwość visible jest ustawiona na true.

Łopatologicznie aby było zrozumiałe bo nie wiem czy będziecie wiedzieć o co mi chodziło (włączam program panel.Visible jest na true ale wykonuje się zdarzenie TabShow aktywnej zakładki która ustawia Panel.Visible na false i z powrotem na True)

Panel pojawia się dopiero gdy myszką klikną jaką kolwiek inną zakładkę. lub po wykonaniu takiego kodu:

Panel.Visible := False;
Panel.Visible := True;

Zadne kombinacje z panel.update/ repaint, paint nie pomagają.

0
Panel.Visible:=false;
try
...
finally
  Panel.Visible:=true;
end;

A jeszcze lepiej zamień to na:

Panel.DisableAlign;
try
...
finally
  Panel.EnableAlign;
end;
0

Ewentualnie jeszcze Application.ProcessMessages;.

0

To nic nie pomogło natomiast przypadkowo wykryłem błąd.

Panel pochodził z palety komponentów AlphaControls (TsPanel)
Natomiast PageControl od TMS Software (TAdvPageControl)

Gdy zamieniłem TsPanel na TAdvPanel wszystko działa jak należy

0

A nie zmieniasz przypadkiem ownera lub parenta tego panelu gdzieś przypadkiem?

0

A nie jest czasem tak, że jak on klika to odrysowuje mu się aplikacja i łapie to ukrywanie panelu. A potem już mu się odrysować nie chce? Daj na końcu jakieś Invalidate czy coś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1