![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дочерние контролы дочерних контролов :-) [D7, WinXP]
gdaujk © (2005-05-28 04:54:00)Я создаю главное окно приложения, а в нём, GroupBox. Далее я создаю элемент управления (напимер кнопку), для которого родительским окном будет не главное окно, а GroupBox. Скажите, как мне теперь обрабатывать сообщения от этой кнопки? Главное окно их вроде не получает. Пробовал создать процедуру обработки событий для GroupBox, но ничего не вышло :-(.
Поможите чем можете и родина вас не забудет :-)
Marser (2005-05-28 15:37:00) [21]
> gdaujk © (28.05.05 14:19) [5] [Новое
>сообщение][Ответить]
> Как обработать сообщения от кнопки, описанной в
> вопросе ?
А почему с GroupBox не вышло?
В крайнем случае можно заменить обработчик.
gdaujk (2005-05-28 14:19:00) [22]Как обработать сообщения от кнопки, описанной в вопросе ?
gdaujk (2005-05-28 12:17:00) [23]>tesseract [2]
OnClick у тебя указатель?
Я пишу на API, ни каких OnClick нету. Оконную процедуру, на сколько я понимаю, можно заменить только с помощью SetWindowLong. Это при использовании VCL (TButton) можно просто присвоить свойствуOnClick адрес новой процедуры. Но OnClick - это ни как не оконная процедура.
Вообще не в этом вопрос. Вопроса два:
1). У какого контрола заменять процедуру?
2). Какое сообщение обрабатывать?
Или один общий вопрос: как обработать сообщения от кнопки, описанной в вопросе ?
gdaujk (2005-05-28 11:53:00) [24]>-=XP=- [1]
То есть ты предлагаешь мне всё-таки писать процедуру обработки событий для GroupBox? Это можно, толко каких событий? Я посмотрел с помощью WinSight'а, GroupBox получает при нажатии кнопочки уйму сообщений. На сколько я понял, в этой уйме главное WM_PARENTNOTIFY, но не несёт информащии об ID/HWND нажатой кнопки.
А вот кнопочка оная получает WM_LBUTTONDOWN / UP. Может мне попробовать приделать оконную процедуру именно к ней? Вариант по-моему не плохой: для всех кнопок в GroupBox'е написать одну процедуру, и обрабатывать в ней WM_LBUTTONDOWN / UP.
Подскажите, в каком направлении двигаться.
tesseract (2005-05-28 11:29:00) [25]в Delphi есть RTTI. Благодяря которому можно динамически переназначать методы объектов. В твоём случае примерно так:
MyButtonsArray[MyButtonIndex].OnClick:=MyButtonClickHandlerProc
-=XP=- (2005-05-28 10:56:00) [26]Кнопка (BUTTON) - тоже окно.