Perform не отправляет сообщение

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

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

Ответить
Аватара пользователя
Browny
новенький
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Perform не отправляет сообщение

Сообщение Browny »

Уважаемые форумчане, есть вопрос:

Код: Выделить всё

PageControl1.Perform(TCM_SETIMAGELIST, 0, smallimage.Handle)
- этот код не работает.

Код: Выделить всё

SendMessage(PageControl1.Handle, TCM_SETIMAGELIST, 0, smallimage.Handle)
- этот код - работает.

есть объяснения? Может, есть опция компилятора для этого, а я не знал?
У меня в Lazarus используется уже -dPassWin32MessagesToLCL.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Метод Perform не предназначен для отправки сообщений.
В Дельфи он вызывает оконную процедуру контрола, как если бы сообщение было на самом деле отправлено.
При этом сообщение в конце концов может попасть в Windows из-за того, что для необработанных сообщений вызывается DefWindowProc.

Этот механизм может работать только в Windows, поэтому в LCL его нет.
Аватара пользователя
Browny
новенький
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Сообщение Browny »

Sergei I. Gorelkin, спасибо! Ситуация ясна.
Ответить