![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Broadcast() не работает ((. Что я делаю не так? [XP]
Magedon © (2012-02-11 17:50:00)Доброе время суток.
Есть надобность отправить сообщение своим контролам.
В форме делаю
var
MsgReadOnly:TMessage;
begin
...
MsgReadOnly.Msg := DI_ReadOnlyStateChanged;
if dmMain.ReadOnly then
MsgReadOnly.WParam := 1
else
MsgReadOnly.WParam := 0;
MsgReadOnly.LParam := LongInt(Self);
MsgReadOnly.Result := 0;
Self.Broadcast(MsgReadOnly);
end;
Во фрейме, который я положил на TabSheet главного PageControl-a на этой же форме:
...
procedure DIReadOnlyStateChanged(var Message: TMessage); message DI_ReadOnlyStateChanged;
...
procedure TframeTexts.DIReadOnlyStateChanged(var Message: TMessage);
begin
ReadOnly := Message.WParam = 1;
end;
Ну и в общем модуле
const
DI_ReadOnlyStateChanged = WM_User + 100;
И вот не доходит эта мессага до фрейма.
Что я сделал не так?
Dimka Maslov (2012-02-11 19:27:00) [1]
> Неужели нет ничего стандартного?
нет
Омлет (2012-02-11 19:11:00) [2]Пусть фрейм перешлет сообщение своим детям.
Magedon (2012-02-11 19:01:00) [3]Спасибо.
Но как же разослать месагу всем контролам своим?
Самому писать чтоле процедурку, в которой обходить Controls и каждому рекурсивно посылать месагу?
Неужели нет ничего стандартного?
Dimka Maslov (2012-02-11 18:01:00) [4]1. Use Broadcast when you want to send the same message to each of the child controls contained within the windowed control. Specify the message to be passed as the value of the Message parameter.
2. Вассал моего вассала - не мой вассал. Контрол моего контрола - не мой контрол.
Раз Фраме лежит на ТабСхеете главного ПагеКонтрола - форме он никто и рассылать ему броадкасты она не обязана.