2008-11-07 4 views
2

Как сохранить макет Tlistviews в Delphi 2007?Как сохранить макет Tlistview

Мне было предложено написать код, позволяющий пользователям переупорядочивать столбцы в TListview (ну все TListviews в нашем приложении), у меня есть код, работающий (путем управления индексом столбцов и установкой ширины в ноль, чтобы скрыть столбцы не нужны), но теперь мне нужен способ сохранить состояние представления, когда формировать выходы.

Каков наилучший способ для этого? Я думал о сериализации, но мне не нужны данные или порядок сортировки, чтобы я немного переполнил меня.

Некоторых вещи, чтобы обдумать Это должно быть на каждом пользователь Она должна быть гибкими, в-случае добавить новый столбец в середине ListView Там нет гарантии, что headding колонны будет уникальный Имя списка может быть не единственным в приложении

Любые идеи?

ответ

3

Если вы хотите сохранить и загрузить определенную часть данных, вы можете сохранить ее в файле ini или xml. Общие данные могут быть записаны в файл. Столбцы - еще одна проблема. Вам нужно найти уникальный идентификатор для каждого столбца. Ини может быть что-то вроде:

[Settings] 

[Col_1] 
position=1 
width=500 
title=hello world 
align=left 
sort=ascending 

.. etc for more fields and more columns. 

Если используется ListView вспомогательного класса, вам нужно только написать код один раз:

TListviewHelper = class helper for TListView; 
public 
    procedure SaveToFile(const AFilename: string); 
    procedure LoadFromFile(const AFileName: string); 
end; 

procedure TListviewHelper.SaveToFile(const AFilename: string); 
var 
    ini : TIniFile; 
begin 
    ini := TIniFile.Create(AFileName); 
    try 
    // Save to ini file 
    finally 
    ini.Free; 
    end; 
end; 

procedure TListviewHelper.LoadFromFile(const AFileName: string); 
var 
    ini : TIniFile; 
begin 
    ini := TIniFile.Create(AFileName); 
    try 
    // Load from ini file 
    finally 
    ini.Free; 
    end; 
end; 

Если TListviewHelper находится в пределах области, вы имеете доступ к дополнительному методы.

0

Я предлагаю вам наследовать от Tlistview (или есть TCustomListView), чтобы создать свой собственный компонент, помощники класса приятны, но неофициальны.

+0

Как это ответить на вопрос о том, как хранить макет? –

0

Возможно, самый простой способ сохранить порядок столбцов - определить идентификатор для каждой строки в виде значащей строки и сохранить список в правильном порядке в реестре. Например, давайте предположим, что столбцы были заказаны как:

Name | First name | Age | Job title 

Затем сохраненное строку в реестре может быть:

"Name,FName,Age,JTitle" 

Чтобы хранить в соответствующем разделе реестра, в соответствии с соответствующим ключом (обычно HCKU\SOFTWARE\MyApplication, под ключ ColumnOrder например)

Смежные вопросы