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

Вниз

Отловить изменение ширины колонки ListView   Найти похожие ветки 

 
NikeOLD   (2004-08-13 15:18) [0]

Господа!
Возникла проблемка. Для корректной прорисовки изображений субствойств в ListView в режиме vsReport необходимо перерисовывать ListView когда пользователь изменяет размер ширины колонки (желательно все время пока пользователь таскает ее границу, как в Автокаде в редакторе слоев, например).
Как отловить сообщение (если оно есть) по изменению ширины колонки?
Спасибо.


 
Mim1 ©   (2004-08-13 15:41) [1]

Можно обрабатывать WM_NOTIFY + LVN_ITEMCHANGED.
Судя по всему вы просто неправильно отрисовыаете таблицу. Отрисовывать его нужно в специальных собитиях, а windows сама вызовет их когда надо.


 
NikeOLD   (2004-08-13 15:56) [2]

Использую OnCustomDrawSubItem
При изменении ширины колонки это событие не вызывается. Либо это глюк Дельфи, либо нужно что-то еще.


 
Mim1 ©   (2004-08-16 08:23) [3]

OnCustomDrawItem, и возможно еще OnCustomDraw


 
Dyn`alt ©   (2004-08-16 10:33) [4]

Придется подменить процедуру окна ListView и в ней отлавливать сообщение WM_NOTIFY
procedure TForm1.FormCreate(Sender: TObject);
begin
 OldListWndProc := ListView1.WindowProc;
 ListView1.WindowProc := ListWndProc;
end;

procedure TForm1.ListWndProc(var Msg: TMessage);
begin
 if Assigned(OldListWndProc) then OldListWndProc(Msg);
 if Msg.Msg = WM_NOTIFY then
   if HD_NOTIFY(Pointer(Msg.LParam)^).Hdr.code = HDN_ENDTRACK then begin
   ...
   end;
end;


 
NAlexey ©   (2004-08-16 10:55) [5]

>Dyn`alt ©   (16.08.04 10:33) [4]
Этот код не будет работать.


 
NAlexey ©   (2004-08-16 11:00) [6]

>NAlexey ©   (16.08.04 10:55) [5]
Извиняюсь перед Dyn`alt ©, неправильно сформулировал пост, этот код не поможет решить автору его проблему. Потому как событие возникает после изменения ширины колонки, а автору надо во время.


 
Dyn`alt ©   (2004-08-16 11:13) [7]

А если HDN_ENDTRACK заменить на HDN_TRACK?


 
NAlexey ©   (2004-08-16 11:39) [8]

>Dyn`alt ©   (16.08.04 11:13) [7]
HDN_TRACK - это событие вообще не вызывается для ListView. Автору правильно сказали что необходимо пользоваться методом OnCustomDraw. При изменении ширины колонки происходит перерисовка. В методе перерисовки надо рассчитывать размеры картинки и рисовать.



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

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

Наверх




Память: 0.48 MB
Время: 0.035 c
3-1091615444
RDen
2004-08-04 14:30
2004.08.29
Выборка по датам


14-1091986370
VID
2004-08-08 21:32
2004.08.29
Через 15 минут по ОРТ фильм "Враг у ворот"


6-1088268953
Skyhawk
2004-06-26 20:55
2004.08.29
Share admin


1-1092402136
Лёня
2004-08-13 17:02
2004.08.29
Функция GetCurrentThread


14-1092041178
inic
2004-08-09 12:46
2004.08.29
В Delphi была горячая клавиша для вставки в редактор