Autor Beitrag
burli
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Sa 14.08.04 22:47 
Hi,
ich hab zwar hier im Forum einige Antworten zu dem Thema gefunden, aber keine hat meine Frage beantworten können.
Ich möchte in einem DBGrid einfach nur eine Spalte sortieren, und zwar ohne SQL oder so. Am liebsten wäre es mir wenn ich das im Objektinspektor einfach fix eintragen könnte. Geht das und wenn ja wie?

Danke und Gruß
burli
nike
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win 2K, Win XP
D5 Ent.
BeitragVerfasst: So 15.08.04 00:15 
Hi!

Sortieren ist keine Sache des TDBGrids. Das TDBGrid soll nur anzeigen. Sortierung gehört "thematisch" zum DataSet. Eine einfache Lösung ist mit dem TAdoDataSet, das kann nämlich Sortierung (und Filter) von Haus aus.

Hier eine Möglichkeit, bei der die Sortierung durch das Event OnTitleClick des TDBGrids ausgelöst wird. Dabei wird einemal die Sortierrichtung (DESC/ASC) private in der boolschen Variable FDESC gespeichert, sowie FSortFieldName die letzten angeklickten Fieldnamen.

Zitat:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TDBPrintSortGrid.TitleClick(Column: TColumn);
begin
  if (Column.Field.DataSet is TADODataSet) then 
   with TAdoDataSet(Column.Field.DataSet) do begin
    if Sort = Column.Field.FieldName then
      begin
        Sort := Column.Field.FieldName + ' DESC';
        FSortFieldName := Column.Field.FieldName;
        FDESC := True;
        SelectedIndex := Column.Index;
      end else
      begin
        Sort := Column.Field.FieldName;
        FSortFieldName := Column.Field.FieldName;
        FDESC := False;
        SelectedIndex := Column.Index;
      end;
  end;
  inherited TitleClick(Column);    //SelectedIndex sollte autom. aufgerufen werden.
end;


Gruss
Nils
Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt.
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: So 15.08.04 15:38 
hallo burli!

gut gesucht kannst du aber nicht haben, denn ich hab auf anhieb eine ganze seite voll mit beiträgen aufgelistet bekommen, welche sich mit deinem problem befassen

beispiel 1
beispiel 2
beispiel 3
beispiel 4
beispiel 5
usw...

wenn du deine anzeige im DBGrid nach indizierten feldern sortiert angezeigt haben willst, dann schaltest du am einfachsten im OnClickEvent deines DBGrids den Indexnamen um.

sind die felder nicht indiziert - alle felder einer tabelle zu indizieren ist auch nicht ratsam, dann löst du dein problem am einfachsten mit einer TQuery-komponente (siehe das beispiel von nils. obwohl ich mir fast sicher bin, dass du mit einer paradox-tabelle arbeitest und somit seinen vorschlag nicht 1:1 übernehmen kannst)

mfg, stefan