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/)
-   -   FreePascal Breite aller Spalten (ListView) auf ein Schlag speichern? (https://www.delphipraxis.net/182209-breite-aller-spalten-listview-auf-ein-schlag-speichern.html)

OrNEC 9. Okt 2014 12:14


Breite aller Spalten (ListView) auf ein Schlag speichern?
 
Geht das? Ich habe viele Spalten und möchte nicht alle manuell nacheinander in die .ini speichern, da bin ich Tage dabei. Geht das vllt einfacher?

Danke!

divBy0 9. Okt 2014 12:16

AW: Breite aller Spalten auf ein Schlag speichern?
 
Mit einer Schleife sollte es gehen. Um welche Spalten geht es denn?

OrNEC 9. Okt 2014 12:42

AW: Breite aller Spalten auf ein Schlag speichern?
 
Zitat:

Zitat von divBy0 (Beitrag 1275394)
Mit einer Schleife sollte es gehen. Um welche Spalten geht es denn?

Es geht um die ListView. Außer ner Schleife gibt's da keine Möglichkeit, oder?

mkinzler 9. Okt 2014 12:44

AW: Breite aller Spalten (ListView) auf ein Schlag speichern?
 
Was gefällt Dir an der Schleife nicht?

OrNEC 9. Okt 2014 12:46

AW: Breite aller Spalten (ListView) auf ein Schlag speichern?
 
Zitat:

Zitat von mkinzler (Beitrag 1275397)
Was gefällt Dir an der Schleife nicht?

Ne, ist ok, ich dachte vllt gibt's da irgendeine Funktion dafür oder so, z.B. xySaveTo();... aber wenn nicht, dann muss ich wohl die Schleife nehmen.

mkinzler 9. Okt 2014 12:52

AW: Breite aller Spalten (ListView) auf ein Schlag speichern?
 
Den schnellsten Weg, um herauszufinden, welche Methoden eine Klasse besitzt, ist die Autovervollständigung der IDE und/oder die Hilfe/Onlinehilfe.

Auch eine Methode würde intern eine Schleife verwenden. Du kannst Dir ja eine eigene Variante ableiten, welche iene Funktionalität hierfür bietet. Oder du Verwendest die Serialisierungsfunktion der VCL und/oder RTTI.

hathor 9. Okt 2014 14:41

AW: Breite aller Spalten (ListView) auf ein Schlag speichern?
 
Delphi-Quellcode:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses IniFiles;

{$R *.DFM}

const
  SColumnSectionFmt = 'ListView.Column.Index=%d';
  SColumnId = 'ID';
  SColumnWidth = 'Width';

procedure SaveColumnsOrder(LV: TListView; const FileName: string);
var
  Ini: TIniFile;
  I: Integer;
  Section: string;
begin
  Ini := TIniFile.Create(FileName);
  try
    for I := 0 to LV.Columns.Count - 1 do
      with Ini, LV.Columns[I] do
      begin
        Section := Format(SColumnSectionFmt, [I]);
        WriteInteger(Section, SColumnId, ID);
        WriteInteger(Section, SColumnWidth, Width);
      end;
  finally
    Ini.Free;
  end;
end;

procedure LoadColumnsOrder(LV: TListView; const FileName: string);
var
  Ini: TIniFile;
  I: Integer;
  Section: string;
  Column: TListColumn;
begin
  Ini := TIniFile.Create(FileName);
  try
    LV.Items.BeginUpdate;
    try
      for I := 0 to LV.Columns.Count - 1 do
      begin
        Section := Format(SColumnSectionFmt, [I]);
        Column := TListColumn(LV.Columns.FindItemID(
          Ini.ReadInteger(Section, SColumnId, I)));
        if Assigned(Column) then with Column do
        begin
          Index := I;
          Width := Ini.ReadInteger(Section, SColumnWidth, Width);
        end;
      end;
    finally
      LV.Items.EndUpdate;
    end;
  finally
    Ini.Free;
  end;
end;

const SIniFileName = '\LVColumnOrder.cfg';

procedure TForm1.FormCreate(Sender: TObject);
begin
  LoadColumnsOrder(ListView1, ExtractFilePath(Application.ExeName) + SIniFileName);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  SaveColumnsOrder(ListView1, ExtractFilePath(Application.ExeName) + SIniFileName);
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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