Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#1

Spaltenreihenfolge im DBGrid ändern u. speichern/restauriern

  Alt 28. Jul 2008, 16:57
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
  Mit Zitat antworten Zitat