2

Delphi 2007 で Tlistviews レイアウトを保存するにはどうすればよいですか?

ユーザーが TListview (アプリケーションのすべての TListview) で列を並べ替えられるようにするコードを書くように依頼されました。コードは機能しています (列のインデックスを操作し、幅を 0 に設定して不要な列を非表示にすることにより)。しかし今、出口を形成するときにビューの状態を保存する方法が必要です。

これを行う最善の方法は何ですか?シリアル化について考えましたが、データや並べ替え順序は必要ないので、少しやり過ぎました。

熟考すべき点 ユーザーごとにする必要があります リストビューの途中に新しい列を追加する場合に備えて、柔軟にする必要があります 列見出しが一意であるという保証はありません リストビュー名はそうではないかもしれませんアプリケーション全体で一意

何か案は?

4

3 に答える 3

3

データの特定の部分のみを保存してロードする場合は、それを ini または xml ファイルに保存できます。一般的なデータをファイルに書き込むことができます。列は別の問題です。各列の一意の ID を見つける必要があります。ini は次のようになります。

[Settings]

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

.. etc for more fields and more columns.

リストビュー ヘルパー クラスを使用する場合は、コードを 1 回記述するだけで済みます。

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 がスコープ内にある場合は、追加のメソッドにアクセスできます。

于 2008-11-07T09:30:39.337 に答える
0

独自のコンポーネントを作成するには、Tlistview から継承する (または TCustomListView がある) ことをお勧めします。クラス ヘルパーは優れていますが、非公式です。

于 2008-11-10T15:10:34.253 に答える