Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

Не могу перехватить 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 вся ветка

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
4-89636
Klev
2003-07-15 17:24
2003.10.27
Создание WebBrowser`а средствами технологии COM средствами WinAPI


4-89630
Oxy
2003-08-23 21:43
2003.10.27
Как DDL-ке выгрузить себя саму?


1-89327
satron
2003-10-16 16:01
2003.10.27
Как выделить строку в RichEdit зная только ее номер ???


7-89608
Noname_
2003-08-12 11:45
2003.10.27
Как запускать chkdsk при каждом старте Windows?


6-89439
electric
2003-08-30 18:56
2003.10.27
почта FastNet