TStringGrid: Sortierindikator (Pfeil) löschen?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
sierdolg
Beiträge: 66
Registriert: Mi 24. Okt 2012, 15:50

TStringGrid: Sortierindikator (Pfeil) löschen?

Beitrag von sierdolg »

Liebe Lazarus-K(o)enner,

wenn ich ein StringGrid, das von der Programmlogik her sich einem anderen "Master"-StringGrid untergeordnet verhalten soll, mit seinen "Detaildaten" (würde man bei einer Datenbankanwendung sagen) fülle und auf eine der Spaltenköfpe klicke, wird das Grid nach dieser Spalte abwechselnd absteigend oder aufsteigend sortiert und erfreulicherweise sogar mit einem grünen Auf- oder Abwärtspfeil markiert - soweit das erwartete Verhalten.

Beim Wechsel eines "übergeordneten" StringGrids ("Mastertabelle" sozusagen) wird das Grid jedoch neu mit entsprechenden Zeilen befüllt, auch das funktioniert. Allerdings bleibt dann der durch die letzte Sortieraktion gesetzte Sortierpfeil über dem Grid erhalten (auch wenn die neu hinzugefügten Daten unsortiert sind). Dies ist zwar nur ein "Schönheitsfehler", aber trotzdem sollte es ja eine Möglichkeit geben, den Sortierindikator wieder zu löschen. Leider finde ich die entsprechende Eigenschaft oder Methode nirgends, weder auf der Ebene von StringGrid noch den untergeordneten Columns.

"StringGridDetail.SortOrder" ist zur Laufzeit immer nur entweder "soAscending" oder "soDescending", auch wenn die Daten noch gar nicht sortiert sind; eine "soUnsorted" (oder Sinngemäßes) gibt es offenbar nicht.

Hat jemand einen Tip, wo das Löschen des Sortierindikators zu geschehen hat? (komme leider nicht aus der Delphi-Welt und bin daher auch nicht entsprechend "vorbelastet" mit den für viele Umsteiger "üblichen" Sitten und Gebräuchen :-) ).

Das Löschen der Detailtabelle versuche ich jedenfalls so:

Code: Alles auswählen

 
  StringGridDetails.Clean([gzNormal, gzFixedRows]);
  StringGridDetails.RowCount:=1;         
 
...vielleicht fehlt hier ja nur noch eine weitere Anweisung?
Oder die "best practice" zum Leeren eines StringGrid (bis auf die Titelzeile und Spaltendefinitionen) sieht ganz anders aus?

Vielen Dank schon mal!

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: TStringGrid: Sortierindikator (Pfeil) löschen?

Beitrag von theo »

Bin auch nicht ganz sicher, wie hier der Königsweg wäre.
Jedenfalls verschwinden bei mir die Pfeile so, wenn man Columns hat.

Code: Alles auswählen

var i:integer;
...
 for i:=0 to StringGrid1.Columns.Count-1 do  StringGrid1.Columns[i].Title.ImageIndex:=-1; 

sierdolg
Beiträge: 66
Registriert: Mi 24. Okt 2012, 15:50

Re: TStringGrid: Sortierindikator (Pfeil) löschen?

Beitrag von sierdolg »

Danke, Theo, das funktioniert in der Tat!

Antworten