
DBGrid Reihenfolge der Spalten sichern
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: DBGrid Reihenfolge der Spalten sichern
... hmm im Moment fällt mir keine bessere Lösung ein - wie könnte man es denn besser machen 

Re: DBGrid Reihenfolge der Spalten sichern
Na so: http://wiki.lazarus.freepascal.org/Asynchronous_CallsDL3AD hat geschrieben:Wie macht man das ?Michl hat geschrieben:Hast du mal probiert eine Methode mit Application.QueueAsyncall im OnColumnMoved aufzurufen und in dieser Methode zu speichern?
In deinem Beispiel könnte man sowas machen:
Code: Alles auswählen
type
TForm1 = class(TForm)
...
private
...
procedure SaveDBGrid1ColumnOrder(Data: PtrInt);
end;
...
procedure TForm1.SaveDBGrid1ColumnOrder(Data: PtrInt);
begin
SaveColumnOrder; // oder wie auch immer deine Methode heißt
end;
procedure TForm1.DBGrid1ColumnMoved(Sender: TObject; FromIndex, ToIndex: Integer);
begin
Application.QueueAsyncCall(@SaveDBGrid1ColumnOrder, 0);
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: DBGrid Reihenfolge der Spalten sichern
Ich verstehe immer noch nicht, was das mit dem OnColumnMove-Event zu tun hat? Kannst du diesen Dialog soweit isolieren, dass du ihn mal hier posten kannst? Ich vermute, du folgst da einem falschen Ansatz.DL3AD hat geschrieben:... ist in einem DBGrid Configurations Form - da wird alles zum Tabellendesign eingestellt und somit gleichzeitig sichtbar.
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: DBGrid Reihenfolge der Spalten sichern
... Danke Michl
Nun funktioniert es mit Application.QueueAsyncall.
Hallo wp_xyz,
zur Laufzeit verschiebe ich die Reihenfolge der Spalten - dass ich verschoben habe signalisiere ich dann mit OnColumnMoved - weil ich unmittelbar danach die Reihenfolge in eine INI schreibe.
aus der INI lade ich dann die Reihenfolge in die Itemlist einer CheckListBox die dann die neue Reihenfolge repräsentiert un eventuell Spalten ein und auszublenden.
Mit Application.QueueAsyncall wird nun sichergestellt das die neue Reihenfolge auch päsent ist bevor ich sie abspeichere.
Gruß Frank
Nun funktioniert es mit Application.QueueAsyncall.
Hallo wp_xyz,
zur Laufzeit verschiebe ich die Reihenfolge der Spalten - dass ich verschoben habe signalisiere ich dann mit OnColumnMoved - weil ich unmittelbar danach die Reihenfolge in eine INI schreibe.
aus der INI lade ich dann die Reihenfolge in die Itemlist einer CheckListBox die dann die neue Reihenfolge repräsentiert un eventuell Spalten ein und auszublenden.
Mit Application.QueueAsyncall wird nun sichergestellt das die neue Reihenfolge auch päsent ist bevor ich sie abspeichere.
Gruß Frank
Re: DBGrid Reihenfolge der Spalten sichern
Ich finde, das ist ein Bug von DBGrid. "OnColumnMoved" (mit "ed" hinten) heißt: Die Spalte WURDE verschoben, die Operation ist beendet, und daher ist es nicht verständlich, warum die alte Reihenfolge angezeigt wird. Die Bezeichnungen von Events, die VOR einer Aktion ausgelöst werden, enden üblicherweise auf "ing", also "OnColumnMoving". Ich habe einen Bugreport geschrieben: https://bugs.freepascal.org/view.php?id=32210.DL3AD hat geschrieben:wenn ich die Reihenfolge der Spalten durch verschieben ändere dann habe ich mit OnColumnMoved ein Event erzeugt und
wollte dann die neue Reihenfolge speichern.
Nun habe ich festgestellt dass das Event kommt befor die neue Reihenfolge der Spalten "fertig" ist - das sieht man schön wenn eine SchowMessage macht.
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: DBGrid Reihenfolge der Spalten sichern
... aha - Bug - jedenfalls konnte ich das Probem dank eurer hervorragenden Hilfe lösen
Gruß Frank

Gruß Frank