Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [TListView] Veränderte Spaltenanordnung speichern (https://www.delphipraxis.net/69139-%5Btlistview%5D-veraenderte-spaltenanordnung-speichern.html)

MCXSC 10. Mai 2006 19:13


[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

marabu 10. Mai 2006 19:51

Re: [TListView] Veränderte Spaltenanordnung speichern
 
Hallo Marcel,

so kannst du dir die Reihenfolge der Spalten holen:

Delphi-Quellcode:
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;
Grüße vom marabu

MCXSC 10. Mai 2006 19:59

Re: [TListView] Veränderte Spaltenanordnung speichern
 
Und wie lade ich die danach wieder?

s-off 10. Mai 2006 20:16

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.

MCXSC 10. Mai 2006 20:20

Re: [TListView] Veränderte Spaltenanordnung speichern
 
Super, danke!!!

marabu 10. Mai 2006 20:29

Re: [TListView] Veränderte Spaltenanordnung speichern
 
Nur der Vollständigkeit halber noch das Gegenstück zu GetColumnOrder():

Delphi-Quellcode:
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;
marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz