Форум: "WinAPI";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
ВнизНе могу перехватить CM_CANCELMODE... Найти похожие ветки
← →
NAlexey (2003-08-22 15:34) [0]Никак не могу перехватить CM_CANCELMODE. Задача такая:
Выкидывать под InplaceEditor в сетке свой контрол например ListBox, короче сделать из ячейки Combobox. Я не пишу новой компоненты а просто переопределяю WndProc InplaceEditor на свой и ловлю WM_KillFocus и CM_CANCELMODE как делается если пишется обычный ComboBox. Так вот CancelMode не ловится и открытый лист не закрывается:
FOldWnd: Pointer;
FNewWnd: Pointer;
procedure InplaceHook(var AMsg: TMessage);
дальше -
FOldWnd := Pointer(GetWindowLong(InplaceEditor.Handle, GWL_WNDPROC));
Pop.Show(100, 100); //Для примера.
FNewWnd := MakeObjectInstance(InplaceHook);
SetWindowLong(InplaceEditor.Handle, GWL_WNDPROC, Longint(FNewWnd));
дальше -
procedure TMyGrid.InplaceHook(var AMsg: TMessage);
begin
with AMsg do case Msg of
WM_CANCELMODE,
WM_KILLFOCUS:
begin
SetWindowLong(InplaceEditor.Handle, GWL_WNDPROC, Longint(FOldWnd));
FreeObjectInstance(FNewWndProc);
end else
Result := CallWindowProc(FOldWnd, InplaceEditor.Handle, Msg, WParam, LParam);
end;
end;
Не прячется всплывшее окно и все тут, wm_killfocus ловит а cancelmode нет...
← →
Игорь Шевченко (2003-08-22 15:43) [1]http://delphi.vitpc.com/helloworld/nogrid.htm если о ComboBox"е речь
← →
NAlexey (2003-08-22 15:57) [2]Вот я и говорю, интересно, как этот пример справиться вот с этим-1) Кладем на форму Grid делаем доступным для редактирования.
2) Кладем на форму Combobox делаем невидимым и добавляем айтемов.
3) В нужный момент показываем в нужном месте открывая лист комбобокса.
Вопрос - если щелкнуть по заголовку формы то фокус не уйтет из ячейки, тащим форму а ComboBox остается на месте.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.018 c