Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

Отловить изменение ширины колонки 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
1-1092645668
Bizon`s
2004-08-16 12:41
2004.08.29
Update Delphi6


14-1092287200
syte_ser78
2004-08-12 09:06
2004.08.29
writeln в кодировку win


1-1092267094
mvgfirst
2004-08-12 03:31
2004.08.29
Нужно написать программу сервер используюя SOAP с чего начать?


3-1091688891
belkova
2004-08-05 10:54
2004.08.29
table1.indexFieldNames


14-1092194477
Aldor_
2004-08-11 07:21
2004.08.29
На какой минимальной конфигурации будет приемлемо рабать Win2K?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский