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

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

Компонент и WM_DISPLAYCHANGE


FX ©   (2004-07-02 18:45:00) 

Здравствуйте. Как заставить компонент, наследник TCustomControl, получать сообщения WM_DISPLAYCHANGE?
Спасибо.


Mim1   (2004-07-05 17:57:00) [1]


> TCustomControl является потомком TWinControl


Точно, я почемуто подумал что это предок TControl. По аналогии с TPanel -> TCustomPanel, TEdit->TCustomEdit и п.д.


Григорьев Антон   (2004-07-05 13:40:00) [2]

Ответил здесь: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=23537


FX   (2004-07-05 11:48:00) [3]

1) TCustomControl является потомком TWinControl
2) Не работает код:

type
 TMyComponent = class(TCustomControl)
 private
   { Private declarations }
 protected
   { Protected declarations }
   procedure WMDisplayChange(var Msg: TWMDisplayChange); message WM_DISPLAYCHANGE;

...

implementation

procedure TMyComponent.WMDisplayChange(var Msg: TWMDisplayChange);
begin
 Windows.Beep(500, 500);
end;

...

Почему?

Спасибо.


Mim1   (2004-07-02 21:11:00) [4]

Написав метод
   procedure mymsg(var msg:Tmessage); message wm_user+10;
вы сможете передать в него при помоши perform нужное событие.
Так же можно изменить предка вашего компонента на TWinControl и тогда указанный выше метод (mymsg) сработает наверняка.
Если же это невозможно, то можно сделать так же, как это реализовано в таймере. Т.е. создать невидимое окно allocatehwnd.
Возможно можно как то подписаться на получение этого сообщения от parent'a, к сожалению мне такого способа неитзвестно.


Наверх

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