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

Вниз

OnEndEditLVItem   Найти похожие ветки 

 
Sapersky   (2006-10-17 19:54) [0]

Кто-нибудь пробовал? У меня не работает.
Версия KOL, правда, старая, но в новых WndProcEndLabelEdit, вроде бы, не изменилась, значит и вести они себя должны так же.
Собственно почему не работает. Выходит из WndProcEndLabelEdit вот в этом месте:
if LVDisp.item.pszText = nil then Exit;
Если убрать проверку, событие срабатывает, но нельзя изменять редактируемый текст. Кстати, вообще не очень понятно, как его изменять, если это PChar. Сколько там памяти выделено - неизвестно, можно, конечно, понадеяться что MAX_PATH...


 
Vladimir Kladov   (2006-10-18 18:49) [1]

Посмотрел я, все нормально работает. Вы опцию-то liustview поставьте, чтобы он редактировать разрешал. Пример обработчика:

function TForm1.LV1EndEditLVItem(Sender: PControl; Idx, Col: Integer;
 NewText: PChar): Boolean;
begin
 if NewText = "z" then
 begin
   Result := FALSE;
   Sender.LVItems[ Idx, 0 ] := "zzzzzzzz";
 end
   else
 begin
   Result := TRUE;
 end;
end;


 
Sapersky   (2006-10-18 19:31) [2]

Да, работает. Я проверял плохо - просто включал/выключал редактирование, не изменяя текст. Шибко умный ListView считал, что в этом случае текст мне не нужен и выдавал nil.
Имеется ещё одна проблема - нужно изменить текст непосредственно перед редактированием. Сообщение поймать получается (LVN_BEGINLABELEDIT), но текста оно не даёт (опять-таки LVDisp.item.pszText = nil). LVItems дёргать бесполезно, на текст в редакторе оно не влияет.


 
Vladimir Kladov   (2006-10-18 20:43) [3]

это тогда OnLVData нужно хитро обрабатывать.


 
Sapersky   (2006-10-19 17:47) [4]

Пробовал OnLVData (про lvoOwnerData помню) - похоже, что оно на текст в редакторе не влияет.

Сделал через LVM_GETEDITCONTROL и WM_SETTEXT этому контролу в LVN_BEGINLABELEDIT.

Кстати, в KOLBook от 29.09.06 по OnEndEditLVItem написано: "событие срабатывает, когда завершено редактирование текста элемента пользователем, по любой причине (редактирование отменено или завершено)". У меня, повторюсь, срабатывает только при завершении редактирования с изменением текста.

Ещё, раз уж речь зашла о KOLBook, там есть очепятка в главе про таймеры, относительно того, сколько срабатываний в секунду даёт интервал в 50 миллисекунд :)


 
Vladimir Kladov   (2006-10-20 18:53) [5]

Так на escape и не должно срабатывать. Проверьте в VCL, та тоже так. И вовсе не потому что я захотел сделать как в VCL. Просто система не посылает нотификацию LVN_ENDLABELEDIT(W).

Не понял, что за владельцы меню, в другой ветке меня спрашивали. Куда смотреть, что там случилось?



Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.037 c
2-1178996245
likenoother
2007-05-12 22:57
2007.06.03
из Timage в Tpaintbox


15-1178092102
Alkid
2007-05-02 11:48
2007.06.03
Появилось стойкое желание...


15-1178872117
Плохиш
2007-05-11 12:28
2007.06.03
А пофигу мне голубые штаны!!!!


1-1175508636
Feds
2007-04-02 14:10
2007.06.03
MDI in DLL


15-1177673583
Kerk
2007-04-27 15:33
2007.06.03
Умер Патриарх Алексий второй