Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TFrame и событие "OnPaint"


Silver... ©   (2006-01-26 14:44:00) 

Необходимо выполнить некоторые действия когда TFrame становится "Видным" (можно "по трогать" любой бидимый контрол на нем)

я так понимаю подходяший случай "OnPaint" тока вот бяда до него не достучусь

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


Silver...   (2006-01-31 14:40:00) [1]

Стыдно говорить но так и не разобрался с доп. вопросом (не тока о нем думал :) ) из [8]:


> а теперь ... :) ... хотел бы уметь ловить и когда "прячется"
> - на нем (MyFrame) рисуют (если мона вообще)


... кто нить в курсе "предупреждают" обыекта перед дем как "испортить" лицо

---
ПыСы: Повторю вопрос именно здесь, дуаю незачем плодить доп. ветку вопросы то связанные как '+' и '-' ИМХО


Silver...   (2006-01-27 20:04:00) [2]


> CM_CONTROLLISTCHANGE


не то :( выдается один раз видимо при создании MyFrame
а надо КАЖДЫЙ раз как MyFarame скрывается с глаз (частично или полностью)

----
Спасибо Leonid Troyanovskyза поддержку


Leonid Troyanovsky   (2006-01-27 17:43:00) [3]


> Silver... ©   (27.01.06 17:22) [9]

> как пропустить (сообщение) его до конца


inherited ?


> о том что на него чего-то там ложат?


CM_CONTROLLISTCHANGE ?

--
Regards, LVT.


Silver...   (2006-01-27 17:22:00) [4]

только что заметил на Фрейме есть TSplitter - он не получает сообщения на перерисовку

т.е. на нем остается то что било на том месте.

видимо так как я обрабатываю сообщение другие контролы его не получают
как пропустить (сообщение) его до конца

---------------
кстати на асчет [8] ряльно получить извещение из MyFrame о том что на него чего-то там ложат?


Silver...   (2006-01-27 16:01:00) [5]


> message WM_ERASEBKGND;


самое оно !!! спасибо

а теперь ... :) ... хотел бы уметь ловить и когда "прячется" - на нем (MyFrame) рисуют (если мона вообще)

ПыСы: Аппетит приходит во время еды :)


Leonid Troyanovsky   (2006-01-26 19:37:00) [6]


> Silver... ©   (26.01.06 19:29) [6]

> --- Надо: в момент когда юзеру показивается/прячется (OnShow/OnHide)


procedure WM_EraseBkgnd(var Message: TMessage); message WM_ERASEBKGND;

Но это, видимо, в смысле "показывается".

--
Regards, LVT.


Silver...   (2006-01-26 19:29:00) [7]


> procedure SetParent(AParent:TWinControl); override;

не понял а это тут при чем?

Поясню, значит так:
--- имеется MyFrame который могу положить на TForm, TPageControl, ...
--- Надо:в момент когда юзеру показивается/прячется (OnShow/OnHide) MyFrame выполнить некоторые действия

- у Формы имеется метод OnShow/OnHide (OnActivate, OnPaint) который можно использовать под эту цель
- у PageControl - OnChange (TabSheet.OnShow/OnHide)

 Но дело в том что один и тот же фрейм может находится на многих формах и PageControl-ах, ... и не очень хоцца везде обработку делать

...я хочу обработку делать не в Form-е/PageControl-е/... а прямиком в MyFrameтока вот беда нету у TFrame подходящих задач методов типа OnShow вот и приходится изворачиваться

???


Silver...   (2006-01-26 18:24:00) [8]

!!! есть контакт !!!

тока, не ожидаемый:
сообщение WM_Paint получаю тока в случае накривания площади [MyFrame] ДРУГИМ ПРИЛОЖЕНИЕМ ...

да и то только если проходится "краем" этого окна по поверхности [MyFrame]

... а мне нужно чтоб произходило даже если [MyFrame] находится на TPageKontrol и перевернули страницу

как быть?


Leonid Troyanovsky   (2006-01-26 17:50:00) [9]


> Silver... ©   (26.01.06 14:44)  
> Необходимо выполнить некоторые действия когда TFrame становится
> "Видным" (можно "по трогать" любой бидимый контрол на нем)


procedure SetParent(AParent:TWinControl); override;

Т.е., после inherited и трогай.

--
Regards, LVT.


Silver...   (2006-01-26 16:56:00) [10]


> Перекрой WM_PAINT, если уж так...


первое что пробовал:


...
 private
   procedure FrameWM_Paint(var Msg: TWMPaint{TMessage}); message WM_PAINT;
...

procedure TMyFrame.FrameWM_Paint(var Msg: TWMPaint{TMessage});
begin
 ShowMessage('Paint');
end;
...


вердикт: не катит видимо TFrame сообшения не получает :(


Romkin   (2006-01-26 16:14:00) [11]

Перекрой WM_PAINT, если уж так...


Silver...   (2006-01-26 15:44:00) [12]

... необходимо эти самые действия делать в теле TFrame и именно в момент становления "видимым" ...

plz. хоть размышленя на тему имеются?

да, раз уж здесь, надо-бы отловить и когда его (TFrame) "накрывают" чем нибудь (на нем нарисуют, становится невидимым, ...)

спасибо


Наверх

Титульная страница Поиск, карта сайта Написать письмо