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

Вниз

Какое событие изменение ширины столбцов в TKOLListView   Найти похожие ветки 

 
Sewix ©   (2004-11-07 00:46) [0]

Мне надо сохранить в ini фалй ширину столбцов в TKOLListView. Какое событие надо обрабатывать? И как узнать какой именно столбец имнелился? Спасибо.


 
ecm   (2004-11-07 01:30) [1]

Сам не проверял, но думаю надо делать примерно так:
1) Получить хендл на Header при помощи LVM_GETHEADER
2) Отловить WM_NOTIFY(HDN_ENDTRACK) соответсвующий этому хендлу
3) В структуре HDITEM будет и название и номер и ширина...:)
Только зачем все так усложнять?
Можно же просто в какой-то определенный момент(закрытие окна
или программы) взять и сохранить текущие значения ширины всех столбцов


 
Sewix ©   (2004-11-07 11:02) [2]

Действительно можно пробижатся по всем ListView.LVColWidth[i] и сохранить все их ширины на событие закрытия окна программы. Но меня этот вариант не устроит т.к. во время работы программы в TKOLListView могу потгружатся разные данные и для каждых я хочу хранить свои настройки, если я сделаю на событие закрытие окна, то он сохранит настройки только для последних открытых данных. Вопрос остаенся открытым: на какое событие повесить обработчик? Событие изменение ширины колонки.


 
ecm   (2004-11-07 12:41) [3]

Похоже первый ответ требует подробных разьяснений :)
(А самостоятельно в MSDN посмотреть уже лом?)

....
var
 LV1Header: THandle;

const
 HDN_ENDTRACK = -307;

type
 PNMHEADER = ^tagNMHEADERA;
 tagNMHEADERA = packed record
   Hdr: TNMHdr;
   Item: Integer;
   Button: Integer;
   PItem: PHDItemA;
 end;


2Kladov: Это конечно бы надо внести в delphicommctrl.inc
но наверное вместе с реализацией HeaderControl ...

procedure TForm1.KOLForm1FormCreate(Sender: PObj);
begin
 ...
 LV1Header := ListView1.Perform(LVM_GETHEADER,0,0);
 ...
end;

function TForm1.KOLForm1Message(var Msg: tagMSG;
 var Rslt: Integer): Boolean;

var
 nmhdr: PNMHEADER;
begin
 if Msg.message = WM_NOTIFY then begin
   nmhdr := PNMHEADER(Msg.lParam);
   if (nmhdr.Hdr.code = HDN_ENDTRACK) and (nmhdr.Hdr.hwndFrom = LV1Header) then begin
     //nmhdr.Item -> Номер столбца
     //nmhdr^.PItem^.cxy -> новая ширина столбца
     // и еще куча всего . Подробнее см. описание HDITEM
   end;
 end;


З.Ы. Если ListView на форме один то все связаное с LV1Header наверное можно выбросить


 
SPeller ©   (2004-11-07 15:09) [4]

Sewix ©   (07.11.04 11:02) [2]
Но меня этот вариант не устроит т.к. во время работы программы в TKOLListView могу потгружатся разные данные

Ну так вот и сделай в процедуре загрузки данных сохранение ширины столбцов.


 
ecm   (2004-11-07 16:23) [5]

2Speller Это понятно - все в руках программиста и всегда можно сделать проще. Но человек просил:
-Вопрос остаенся открытым: на какое событие повесить обработчик? Событие изменение ширины колонки.
Я думаю этот вопрос теперь закрыт? ... :)


 
Sewix ©   (2004-11-07 16:39) [6]

Не знаю как грамотнее сделать: сохранять текущее положение столбцов при загрузке данных или сохранять их только при изменении ширины столбцов обрабатывая это событие. Задумывалось сделать при изменении ширины, но сейчас я уже сомниваюсь. Вобщем сделаю как полчится. Вопрос можно считать закрытым. Спасибо.


 
ecm   (2004-11-07 20:56) [7]

ИМХО, что правильнее их сохранять при изменении набора(названий и т.д. но не размеров) столбцов + при закрытии (окна или программы) - меньше лишних обращений к Ини-файлу. Потому как это
все-равно прийдется делать... - A если пользователь не будет менять щирины "по умолчанию" при смене контента?  Событие
if (nmhdr.Hdr.code = HDN_ENDTRACK) and (nmhdr.Hdr.hwndFrom = LV1Header) then
выполняется только при "отпускании" разделителя между заголовками столбца.. т.е. все-равно прийдется как то сохранять
новые столбцы... :)



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

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

Наверх




Память: 0.49 MB
Время: 0.03 c
8-1109343555
Pers
2005-02-25 17:59
2005.06.14
Изображения


14-1117023904
cyborg
2005-05-25 16:25
2005.06.14
Сейчас новости шестичасовые по первому были


1-1117460259
heady
2005-05-30 17:37
2005.06.14
Размеры иконок


14-1116491813
Skier
2005-05-19 12:36
2005.06.14
Опять новая концепция развития нашего автопрома...


14-1116919778
NeyroSpace
2005-05-24 11:29
2005.06.14
Моменты из фильма Terminator 2