Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Отрисовывание tPanel


Автор: Urvin 2.4.2008, 20:25
Друзья!
Есть довольно сложное приложение, где в каждый момент времени на основной рабочей области показывается какой-либо один или группа элементов управления.
Есть у меня список lstList типа VirtualTreeView, он растянут по размерам рабочей области.
Есть pnlPanel - фиксированных размеров панель с лежищими на ней элементами управления - строки ввода, комбобоксы... Панель насильно фиксируется по центру рабочей области.
По нажатии кнопки происходит следующее действие:
Код

lstList.Visible:=false;
pnlPanel.Visible:=true;

Случается так, что список прячется, а панель не открывается. Скорее всего, просто не прорисовывается, т.к. если я сверну-разверну приложение, то панелька появляется и работает в нормальном режиме.

Как заставить панельку насильно отрисовываться на форме?
как показала практика, обычное Refresh-Repaint чет не очень помогают...или я не умею их готовить(

http://funkyimg.com/viewer.php?img=46236proga.jpg

Автор: Wolfgan 3.4.2008, 09:09
Есть несколько вариантов:
1. Проверь у списка и у панели одни и те же родители? Т.е. на одном компоненте они располагаются ли
2. Попробуй изменить так: положи на форму еще две TPanel. В одну положи список, в другую инструменты. И управляй этими панелями, а не списком.
3. Попробуй после показа панели или списка обновить полностью форму. 
Т.е.: 
Код

  lstList.Visible:=false;
  pnlPanel.Visible:=true;
  Form1.Update;

// можно попробовать протолкнуть очередь сообщений
// Application.ProcessMessages;

Автор: Urvin 3.4.2008, 11:55
1. Да, на одной форме
2. Попробую
3. Пробовал, никак

Автор: X-Vlad 3.4.2008, 13:53
Код

lstList.Visible:=false;
  pnlPanel.Visible:=true;
 pnlPanel.Update;


можна попробовать

Код

pnlPanel.Parent.Update;

Автор: MetalFan 3.4.2008, 15:54
попробуй это повторить в тестовом приложении и выложи сюда.

Автор: lukas 3.4.2008, 19:27
Код

Панель насильно фиксируется по центру рабочей области.


зачем же насильно, когда можно просто...

Panel1.Anchors := [];

З.Ы. Попробуй поиграться со свойством ComponentStyle...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)