DBGrid Reihenfolge der Spalten sichern

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

Re: DBGrid Reihenfolge der Spalten sichern

Beitragvon DL3AD » 26. Jul 2017, 12:17 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 :?:
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon Michl » 26. Jul 2017, 19:18 Re: DBGrid Reihenfolge der Spalten sichern

DL3AD hat geschrieben:
Michl hat geschrieben:Hast du mal probiert eine Methode mit Application.QueueAsyncall im OnColumnMoved aufzurufen und in dieser Methode zu speichern?

Wie macht man das ?

Na so: http://wiki.lazarus.freepascal.org/Asynchronous_Calls

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; 
Michl
 
Beiträge: 2260
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon wp_xyz » 26. Jul 2017, 19:44 Re: DBGrid Reihenfolge der Spalten sichern

DL3AD hat geschrieben:... ist in einem DBGrid Configurations Form - da wird alles zum Tabellendesign eingestellt und somit gleichzeitig sichtbar.

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.
wp_xyz
 
Beiträge: 2564
Registriert: 8. Apr 2011, 08:01

Beitragvon DL3AD » 27. Jul 2017, 09:02 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
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon wp_xyz » 27. Jul 2017, 10:50 Re: DBGrid Reihenfolge der Spalten sichern

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.

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.
wp_xyz
 
Beiträge: 2564
Registriert: 8. Apr 2011, 08:01

Beitragvon DL3AD » 27. Jul 2017, 11:12 Re: DBGrid Reihenfolge der Spalten sichern

... aha - Bug - jedenfalls konnte ich das Probem dank eurer hervorragenden Hilfe lösen :)

Gruß Frank
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

• Themenende •
Vorherige

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
porpoises-institution
accuracy-worried