Hallo,
in einer kleinen Datenbankapplikation soll der Anwender die Breite und die Reihenfolge der Spalten im DBGrid ändern können.
Zur Laufzeit funktioniert dies.
Nun sollen diese Änderungen in einer INI-Datei oder der Registry gespeichert werden um beim nächsten Programmstart von dort ausgelesen und restauriert zu werden.
Mit der Spaltenbreite gelingt dies.
Schreiben mit:
Delphi-Quellcode:
For i := 0 To dbgUCE.Columns.Count - 1 Do begin
RegIni.WriteInteger('CONFIG','dbgUCE.Columns[' + IntToStr(i) + '].Width',dbgUCE.Columns[i].Width);
end;
Lesen mit:
Delphi-Quellcode:
For i := 0 To dbgUCE.Columns.Count - 1 Do begin
dbgUCE.Columns[i].Width := RegIni.ReadInteger('CONFIG','dbgUCE.Columns[' + IntToStr(i) + '].Width',dbgUCE.Columns[i].Width);
end;
Die Reihenfolge bekomme ich nicht gespeichert und restauriert.
Mit dem Attribut Index von Columns.Items[i] funktioniert es nicht, ID ist schreibgeschützt.
Man kann Index zwar einen neuen Wert zuweisen, der dann auch zu einer neuen Position der Spalte führt, aber der Index scheint sich beim Verschieben zur Laufzeit nicht zu ändern, so dass man über den Zugriff auf den Index nicht die aktuelle Position der Spalte im DBGrid erhält, sondern die Position zur Entwicklungszeit.
Eine Zuweisung im Ereignis onColumnMoved führt auch nicht zum gewünschten Ergebnis
Hat jemand eine Idee, mit welchem Attribut des DBGrids bzw. der Columns das zu realisieren ist.
Stephan