Посылка сообщения окну

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

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

Ответить
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Посылка сообщения окну

Сообщение grigoreo »

Кто нибудь знает как в Lazaruse реазизовать вот такое , но желательно чтобы предложеный метод и под виндой и линуксом тоже работал

SendMessage(Self.Handle,WM_NEXTDLGCTL,0,0);
Павел Ишенин
постоялец
Сообщения: 475
Зарегистрирован: 24.03.2007 09:16:52

Сообщение Павел Ишенин »

Послать сообщение само по себе не сложно (подключите LCLIntf и используйте SendMessage), но кто его будет обрабатывать? Если это ваш собственный диалог, то добавьте обработчик этого сообщения и напишите реализацию. Если вы хотите, чтобы WM_NEXTDLGCTL отработало под linux для системного диалога, то увы - lazarus не эмулирует windows.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

а что делает это сообщение? если выбор следующего контрола по порядку обхода - то просто метод SelectNext
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

alexs писал(а):а что делает это сообщение? если выбор следующего контрола по порядку обхода - то просто метод SelectNext


да это сообщение в Виндовс эмулировало нажатие кнопки Tab, поэтому мне и нужен вариант чтобы такой код обрабатывался и в Виндовсе и в других поддерживаемых Фрее Паскалем платформах в частности в Линуксе
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

grigoreo
могу только посоветовать посмотреть исходники xneur как он там это делает.
Павел Ишенин
постоялец
Сообщения: 475
Зарегистрирован: 24.03.2007 09:16:52

Сообщение Павел Ишенин »

grigoreo писал(а):да это сообщение в Виндовс эмулировало нажатие кнопки Tab, поэтому мне и нужен вариант чтобы такой код обрабатывался и в Виндовсе и в других поддерживаемых Фрее Паскалем платформах в частности в Линуксе


Если так и нужно только для lazarus форм, то SomeForm.PerformTab() не подойдет?
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

alexs писал(а):а что делает это сообщение? если выбор следующего контрола по порядку обхода - то просто метод SelectNext


Павел Ишенин писал(а):
grigoreo писал(а):да это сообщение в Виндовс эмулировало нажатие кнопки Tab, поэтому мне и нужен вариант чтобы такой код обрабатывался и в Виндовсе и в других поддерживаемых Фрее Паскалем платформах в частности в Линуксе


Если так и нужно только для lazarus форм, то SomeForm.PerformTab() не подойдет?


Спасибо оба варианта работают
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

alexs писал(а):а что делает это сообщение? если выбор следующего контрола по порядку обхода - то просто метод SelectNext


а как после выполнение перехода на следующий контрол реализовать чтобы если в том контроле есть текст, переместится в конец строки?
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Edit1.CaretPos ?
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

Attid писал(а):Edit1.CaretPos ?


А тогда подскажи как узнать текущий контрол формы на котором сейчас стоит фокус, просто обработчик событий стоит общий, или может есть эвент которое происходит когда контрол получает фокус?
Ответить