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

Вниз

Какое событие изменение ширины столбцов в 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 вся ветка

Форум: "KOL";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.032 c
3-1115359406
Ньюб
2005-05-06 10:03
2005.06.14
как отловить обрыв связи на IBX_Version = 6.0;


1-1117449910
AndrewK
2005-05-30 14:45
2005.06.14
Как отловить активацию MDI окон из главной формы


14-1116690237
Nikolay M.
2005-05-21 19:43
2005.06.14
Кто помнит, как добраться до места прошлогодней MMP?


1-1116944852
sergg
2005-05-24 18:27
2005.06.14
Запуск файлов Word Excel и т.д.


4-1114495725
magedon
2005-04-26 10:08
2005.06.14
как работать с игровым портом?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский