Конференция "Компоненты" » Отправить сообщение другим компонентам на форме
 
  • ford © (23.01.14 16:36) [0]
    Добрый день!
    Сделал компонент наследник от TComponent.
    Как отправить сообщение форме на которой размещен этот компонент?

    SendMessage(Handle,INI_SAVE_MESSAGE,0,0);

    откуда взять этот handle? parent у TComponent нет, есть Owner, но он тоже TComponent :(
  • ford © (23.01.14 17:33) [1]
    ураа, получилось так

    var msg:TMessage;
    begin
    msg.Msg:=INI_SAVE_MESSAGE;
    msg.WParam:=0;
    msg.LParam:=0;
    msg.Result:=0;
    TForm(Owner).Broadcast(msg);
    end;
  • имя (24.01.14 14:21) [2]
    Удалено модератором
  • DimaBr © (24.01.14 14:24) [3]
    Если вы его кинули в дизайнере, то Owner, а если создали динамически с Owner = nil, то либо прописать владельца в своё свойство либо никак
  • vuk © (26.01.14 22:16) [4]
    Надо учитывать, что Owner может быть не TForm, а например, TFrame или TDataModule. Поэтому надо проходить по цепочке владельцев и проверять их на то, являются ли они наследниками TForm. С другой стороны, может надо не TForm искать, а первый попавшийся наследник от TWinControl? Все зависит от цели.
  • DimaBr © (28.01.14 10:32) [5]
    Да и вообще, возможно Owner одна форма, а Parent другая. Какой форме рассылать сообщения ?
  • vuk © (28.01.14 12:22) [6]
    Компонент тут невизуальный, наследник TComponent, у него parent отсутствует. Другое дело, что владельцем может быть вообще любой компонент. Просто по определению. Поэтому в любом случае, нужно копаться в цепочке владельцев. А приведение владельца к TForm в перспективе ничего, кроме багов не даст.
 
Конференция "Компоненты" » Отправить сообщение другим компонентам на форме
Есть новые Нет новых   [118478   +40][b:0][p:0]