Добрый день,
хочу написать свою процедуру типа Broadcast, но чтобы эта процедура отправляла сообшение только контролам определённых классов, переданных в качестве параметра.
Что-то вроде этого:
procedure BroadcastToClasses(var Message; // отправляемое сообщение
ParentControl:TWinControl; // родительский контрол
CheckClasses:array of {тип ???} // массив для проверки на соответствие типам
)
begin
......
{проходим в цикле по всем дочерним контролам ParentControl}
...
{проверяем каждый контрол в цикле на принадлежность к CheckClasses
и если класс соответствует, то шлём ему сообщение}
if Controls[i] is CheckClasses[j] // эта проверка не работает (E2015 Operator not applicable to this operand type)
then Controls[i].WindowProc(TMessage(Message));
end;
Пример вызова процедуры:
Допустим, хотим отправить сообщение только кнопкам на форме:
BroadcastToClasses(Message, Form1, [TButton, TBitBtn, TCustomButton] );
Ну и собственно 2 вопроса:
1. какой тип элементов массива CheckClasses указать ?
2. как проверить каждый контрол на форме на соответствие классу-элементу массива ?