DBGrid.SelectedRows.Items sortieren?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
pschlaz
Beiträge: 1
Registriert: Do 13. Apr 2017, 12:53

DBGrid.SelectedRows.Items sortieren?

Beitrag von pschlaz »

Hallo allerseits,
ich habe gerade gelernt wie bei einem DBGrid MultiSelect funktioniert und die damit gebookmarkten Records angesprochen werden können.

Allerdings werden die ausgewählten Records genau in der Reihenfolge angesprochen, wie sie angeklickt worden sind:

Code: Alles auswählen

for i := 0 to DBGrid1.SelectedRows.Count - 1 do begin 
  DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
  // irgendwas mit dem Record machen
end;

Ich möchte aber die Reihenfolge, wie sie im DBGrid angezeigt wird, einbehalten und nicht die Reihenfolge nach dem Auswählen.
Wie geht das?

Gruß,
Peter

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: DBGrid.SelectedRows.Items sortieren?

Beitrag von Soner »

Eine mögliche Lösung wäre, die Daten(nur ein Feld, z.B. indexfeld) Sortiert in eine Stringliste hinzufügen und nachher mit der Liste arbeiten.
So z.B.

Code: Alles auswählen

 
//Achtung Pseudocode
for i := 0 to DBGrid1.SelectedRows.Count - 1 do begin
  DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
  for i:=0  Stringliste.count-1 do
    if DBGrid1.DataSource.DataSet.Recno<Stringliste[i] then begin
      InDieListeEinfügen;
      break;
    end
    else Inc(i);
end;
 
//  JETZT aus Stringliste .. irgendwas mit dem Record machen..
for i:=0  Stringliste.count-1 do
....
end;
 

Antworten