Обмен сообщениями между формами

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Обмен сообщениями между формами

Сообщение S_Gur » 18.04.2020 09:32:06

Господа специалисты по Лазарусу, прошу консультацию. Возник такой вопрос. Я переношу дельфовую программу под Лазарус с целью иметь возможность собрать ее под любую из поддерживаемых Лазарусом платформ. В Дельфях у меня используется обмен сообщениями между формами такого типа:

Код: Выделить всё
With Screen Do For I   := 0 To FormCount - 1 Do If Forms[I] Is TFmMultiLang Then Forms[I].Perform(WM_CLLANG, 0, 0);


Код: Выделить всё
protected
    { Protected declarations }
    procedure WMCLLANG(var Msg: TMessage); Message WM_CLLANG;


Я правильно понимаю, что процедуры типа WM...(var Msg: TMessage); - это чисто виндовая реализация? Есть ли универсальный способ обмена сообщениями для всех операционок, или мне нужно будет делать отдельный код для каждой и обвязывать их директивами компилятора типа {$IFDEF WINDOWS}?
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Обмен сообщениями между формами

Сообщение jsa » 18.04.2020 12:09:26

Да, для каждой ОСи свой код.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Обмен сообщениями между формами

Сообщение S_Gur » 18.04.2020 12:23:32

jsa, спасибо. Не подскажете, как такую систему правильно сделать под Линукс?
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Обмен сообщениями между формами

Сообщение iskander » 18.04.2020 14:05:53

Полагаю WM_CLLANG это пользовательское сообщение?
Если вы добавите в uses ссылку на LMessages и объявите обработчик как
Код: Выделить всё
protected
  { Protected declarations }
  procedure WMCLLANG(var Msg: TLMessage); message WM_CLLANG;

то всё должно работать.
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: Обмен сообщениями между формами

Сообщение S_Gur » 18.04.2020 14:11:42

iskander, да WM_CLLANG - это мое сообщение. В программе оно определяется как WM_USER + 1;

То есть, меняется только наименование юнита? Спасибо большое

Добавлено спустя 8 часов 58 минут 21 секунду:
iskander, я проглядел краем глаза модуль LMessages. Правильно ли я понимаю, что это универсальный, а не только линуксовый модуль? Его можно использовать как минимум и под Windows и под Linux?
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43

Рейтинг@Mail.ru