![]() |
[TListView] Veränderte Spaltenanordnung speichern
Hallo!
Ich habe folgendes Problem: Ich habe eine TListView mit vsReprt und FullDrag=True. Die Spalten kann ich nun verschieben, aber nach einem Neustart des Programmes ist die Veränderung gelöscht... Wie kann ich die Anordnung der Spalten speichern und auch wieder laden...? Hab mich bei Google schon totgesucht. MCXSC |
Re: [TListView] Veränderte Spaltenanordnung speichern
Hallo Marcel,
so kannst du dir die Reihenfolge der Spalten holen:
Delphi-Quellcode:
Grüße vom marabu
uses
Types; function GetColumnOrder(lc: TListColumns): TIntegerDynArray; var i: Integer; begin SetLength(Result, lc.Count); for i := 0 to Pred(lc.Count) do Result[i] := lc.Items[i].ID; end; |
Re: [TListView] Veränderte Spaltenanordnung speichern
Und wie lade ich die danach wieder?
|
Re: [TListView] Veränderte Spaltenanordnung speichern
Hallo,
Speicherung in Ini funktioniert beispielsweise:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, IniFiles; type TForm1 = class(TForm) ListView1: TListView; procedure SaveCols(ListView: TListView); procedure LoadCols(ListView: TListView); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); private { Private-Deklarationen } Ini: TIniFile; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); var ListItem: TListItem; begin Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'myini.ini'); LoadCols(ListView1); end; procedure TForm1.LoadCols(ListView: TListView); var i: Integer; begin for i := 0 to ListView1.Columns.Count - 1 do begin ListView1.Column[i].Index := Ini.ReadInteger('columns', ListView1.Column[i].Caption, ListView1.Column[i].Index); end; end; procedure TForm1.SaveCols(ListView: TListView); var i: Integer; begin for i := 0 to ListView1.Columns.Count - 1 do begin Ini.WriteInteger('columns', ListView1.Column[i].Caption, ListView1.Column[i].Index); end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin SaveCols(ListView1); FreeAndNil(Ini); end; end. |
Re: [TListView] Veränderte Spaltenanordnung speichern
Super, danke!!!
|
Re: [TListView] Veränderte Spaltenanordnung speichern
Nur der Vollständigkeit halber noch das Gegenstück zu GetColumnOrder():
Delphi-Quellcode:
marabu
uses
Types; procedure SetColumnOrder(lc: TListColumns; ida: TIntegerDynArray); var i: Integer; begin for i := 0 to Pred(lc.Count) do if lc.Items[i].ID < Length(ida) then lc.Items[i].Index := ida[lc.Items[i].ID]; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz