![]() |
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! |
AW: Breite aller Spalten auf ein Schlag speichern?
Mit einer Schleife sollte es gehen. Um welche Spalten geht es denn?
|
AW: Breite aller Spalten auf ein Schlag speichern?
Zitat:
|
AW: Breite aller Spalten (ListView) auf ein Schlag speichern?
Was gefällt Dir an der Schleife nicht?
|
AW: Breite aller Spalten (ListView) auf ein Schlag speichern?
Zitat:
|
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. |
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 18:30 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-2025 by Thomas Breitkreuz