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 VirtualTreeView Layout und Werte in INI speichern (https://www.delphipraxis.net/101442-virtualtreeview-layout-und-werte-ini-speichern.html)

Assertor 13. Okt 2007 12:27


VirtualTreeView Layout und Werte in INI speichern
 
Hallo DPler,

ich überlege gerade, wie ich das Aussehen (also die Anordnung und Breite der Columns) und die einzelnen Zeilen sinnvoll in einer INI speichern kann.

Grund: Alle Programmeinstellungen der GUI werden in einer (Unicode) INI gespeichert. Bei den Zeilen wäre es ja möglich etwas in folgender Richtung zu machen:

Delphi-Quellcode:
[Datasets]
SetCount=7
Set1="234234","adfasf","asfasdf"
Set2...Set7
Nur mal ganz abstrakt. Ich habe schon etwas rumgesucht und gegoogelt - nur ne halbe Stunde/Stunde.

Gibt es da schon was fertiges? Auf Mikes Seite ist zwar ein INI Descendant, aber der ist hierfür vollkommen ungeeignet, da er Wertepaare horizontal auflistet, ich aber eine vertikale Anordnung der unterschiedlichen Werte habe. Zusätzlich behandelt dieser auch das Layout speichern nicht.

Und VST.LoadFrom/SaveToFile kenne ich, aber das ist etwas zu Binär ;)

Gruß winkel79

semo 13. Okt 2007 13:36

Re: VirtualTreeView Layout und Werte in INI speichern
 
schade das meine tutorials nicht bei google auffindbar sind?!

columns laden
columns speichern

Assertor 14. Okt 2007 13:00

Re: VirtualTreeView Layout und Werte in INI speichern
 
Hallo Marcus,

Zitat:

Zitat von M. Hassmann
schade das meine tutorials nicht bei google auffindbar sind?!

In der Tat. Die hab ich nicht bei Google gefunden. Ich habe aber auch nur in englisch gesucht - gewohnheit ;)

Vielen Dank für die Beispiele. Ich habe Sie für mich noch etwas abgewandelt, so daß die Positionen der Spalten mitgespeichert werden.

Wer es gebrauchen kann:
Delphi-Quellcode:
procedure SaveGrid(AIniFile: TTntMemIniFile; ATreeView: TVirtualStringTree;
  GridName: WideString);
var
  iColNr : integer;
begin
  if Assigned(AIniFile) and Assigned(ATreeView) and
     (ATreeView.Header.Columns.Count > 0) then
  with AIniFile do
    for iColNr := 0 to ATreeview.Header.Columns.Count-1 do
    begin
      AIniFile.WriteInteger(GridName, 'ColWidth'+IntToStr(iColNr),
        ATreeView.Header.Columns[iColNr].Width);
      AIniFile.WriteInteger(GridName, 'Position'+IntToStr(iColNr),
        ATreeView.Header.Columns[iColNr].Position);
    end;
end;

procedure LoadGrid(AIniFile: TTntMemIniFile; ATreeView: TVirtualStringTree;
  GridName: WideString);
var
  iColNr : integer;
begin
  if Assigned(AIniFile) and Assigned(ATreeView) then
  with AIniFile do
    for iColNr := 0 to ATreeview.Header.Columns.Count-1 do
    begin
      ATreeView.Header.Columns[iColNr].Width := AIniFile.ReadInteger(
        GridName, 'ColWidth'+IntToStr(iColNr), ATreeView.Header.Columns[iColNr].Width);
      ATreeView.Header.Columns[iColNr].Position := AIniFile.ReadInteger(
        GridName, 'Position'+IntToStr(iColNr), ATreeView.Header.Columns[iColNr].Position);
    end;
end;
Vorher natürlich Grid und AIni zuweisen. Bei Bedarf TTntMemIni durch TMemIni o.ä. ersetzen. Ist ja nur ein Unicode Handler.

Jetzt fehlt nur noch das Lesen/Speichern der Nodes in INIs - Hat da auch schon wer etwas "erfunden"?

Gruß winkel79

semo 14. Okt 2007 19:18

Re: VirtualTreeView Layout und Werte in INI speichern
 
entweder du nutzt die nativen methoden.
oder du machst das mal selbst :-)

musst doch nur die knotenliste durchlaufen und jeden record in eine datei ablegen.
beim neuerstellen des forms das ganze dann wieder laden.


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