| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Не могу сделать фокус на дочерний элемент |
| Автор: Indeesa 13.2.2009, 13:28 | ||
Добрый день. Вопрос скорее по VCL, переписываю TStringGrid под свои нужды, делаю обработку нажатия кнопки мыши на ячейку, при нажатии должен появиться TComboBox и чтобы фокус перевёлся на него.
FComboBox := TComboBox.Create( nil ); FComboBox.parent := TStrGrid( self );//так то просто self для наглядности тип привёл копадлся в VCL при вызове сетфокуса он проверяет есть ли у него предок от TCustomForm, если есть то он передаёт ему контрол Если в двух словах, то я хочу чтобы Combobox в режим редактирования сразу уходил |
| Автор: bems 13.2.2009, 15:56 |
| Делай комбобоксу того же родителя что и гриду, и перещитывай координаты из грида, в родительские |
| Автор: Indeesa 14.2.2009, 17:27 | ||
ну так то это решение, но можно создать чистую форму кинуть StringGrid кинуть ComboBox, при создании менять parent у combobox на StringGrid и кнопку со следующим кодом Windows.SetFocus( ComboBox.Handle ) и всё будет шикарно, по моему мнению просто после моего WMMOUSEACTIVATE идёт набор команд который выкидывает фокус с ComboBox, попоробую посылать отдельное сообщение для грида на отоброжение CombobBox А с другой стороны может кто-нить копался с устройством TInplaceEditor в TStringGrid как они ему передают фокус ? |
| Автор: Indeesa 14.2.2009, 21:55 |
| вот что при нажатии на ячейку TStringGrid происходит 33-21 WM_MOUSEACTIVATE -----------Заблокировав 45131 CM_MOUSEACTIVATE 70-46 WM_WINDOWPOSCHANGING 70-46 WM_WINDOWPOSCHANGING 528-210 WM_PARENTNOTIFY 45108 CM_INVALIDATE 70-46 WM_WINDOWPOSCHANGING 45082 CM_ENTER 45063 CM_FOCUSCHANGED 273-111 WM_COMMAND 32-20 WM_SETCURSOR 513-201 WM_LBUTTONDOWN -------- Заблокировав 273-111 273-111 7-7 WM_SETFOCUS 45063 CM_FOCUSCHANGED 45097 CM_UIACTIVATE 512-200 514-202 WM_LBUTTONUP ------- Заблокировав 533-215 Заблокировав эти три сообщения фокус перейдёт на combobox Дествительно утро вечера мудреннее =) Всем спасибо P.s но всё равно есть маза что я это не корректно делаю, если есть спецы сталкивавшиеся с переписанием компонентов, не могли бы Вы посоветовать литературку |