![]() |
Datenbank: Oracle • Version: 10 • Zugriff über: Client / Server
Sortierung von Spalten im DBGrid mit Anzeige eines Pfeils...
Sortierung von Spalten im DBGrid mit Anzeige eines Pfeils für die Sortierrichtung
--------------------------------------------------------------------------------- Das Thema wurde hier schon öfter mal behandelt, aber ich werde nicht schlau draus. Ich habe eine Tabelle, deren Daten in ein DB-Grid geschrieben werden. Mein Vorgänger hat nun diesem Grid einen Sortieralgorithmus aufgepfropft, der nach der Sortierung den Spaltenkopf blass-blau einfärbt. Ich hätte gerne stattdessen - oder zusätzlich einen Pfeil/Dreieck der/das die Sortierrichtung anzeigt. folgenden Versuch habe ich bereits gestartet:
Delphi-Quellcode:
Wenn ich den Titel einer Spalte anklicke malt er ganz kurz mein Dreieck an die angegebene Position, und dann ist es aber auch gleich wieder weg (man sieht nur ein kurzes aufblinken).
PfeilBmp:= TBitmap.Create;
ImageList1.GetBitmap(0, PfeilBmp); if Assigned(PfeilBmp) then TDBGrid(Column.Grid).Canvas.Draw(100, 0,PfeilBmp); PfeilBmp.Free; Da fehlt wohl noch was - aber was? Und wie finde ich heraus wohin er genau das BitMap setzen soll? |
Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil
In welcher Methode/Event wird dieser Code ausgeführt?
Er muss natürlich in einer Paint-Routine des Controls ausgeführt werden und darf nicht beim Klicken der Titelzeile ausgeführt werden. Die Zeichenfläche hat kein "Gedächtnis" und verliert ihren Inhalt sobald Windows meint es müste etwas neu gezeichnet werden (Und das ist in einem MouseClick-Event sicherlich der Fall). Das Thema hat damit eigentlich überhaupt nichts mit Datenbanken zu tun sondern ist ein Grundsätzliches Verhalten der Zeichenflächen (Canvas) von Windows. |
Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil
Dieser Code wird im OnTitleClick-Event des TDBGrids ausgeführt.
Zitat:
Wie müßte das richtig aussehen? |
Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil
Zitat:
Zitat:
![]() |
Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil
DefaultDrawing:= False; // in den Eigenschaften des DBGrid
dann unter OnColumnDrawCell eine eigen Zeichenroutine schreiben.
Delphi-Quellcode:
Dein Pfeil verschwindet sonst immer weil er einfach nochmals überzeichnet wird.
procedure TForm1.OnDrawColumnCell(Sender: TDBGrid; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState; MyTable: TADOTable); var MyText : string; bmpImage : TBitmap; begin if State = [gdSelected..gdFocused] then begin bmpImage := TBitmap.create; ToolbarImages.GetBitmap(15,bmpImage); Sender.Canvas.Font.Style:= [fsBold]; Sender.Canvas.FillRect(Rect); MyText:= ' '+ DataSource11.DataSet['Name']+ ', ' + DataSource11.DataSet['Vorname']; Sender.Canvas.TextRect(Rect,Rect.Left+16,Rect.Top+2,MyText); Sender.Canvas.DrawFocusRect(Rect); Sender.Canvas.Draw(1,1+Rect.Top,bmpImage); bgLabel.Color:= Sender.Canvas.Brush.Color; bmpImage.Free; end else begin Sender.Canvas.Font.Style:= []; Sender.Canvas.FillRect(Rect); MyText:= ' '+ DataSource11.DataSet['Name']+ ', ' + DataSource11.DataSet['Vorname']; Sender.Canvas.TextRect(Rect,Rect.Left,Rect.Top,MyText); bgLabel.Color:= Sender.Canvas.Brush.Color; end; end; mfg, silence |
Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil
Hallo Glühwürmchen,
falls du immer noch nach einer Lösung suchst hätte ich was anzubieten. alex |
Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil
Hallo,
ich hatte das Thema auch schon einmal und habe viele Möglichkeiten ausprobiert, aber ganz ehrlich, die Richtige Lösung habe ich erst mit Jedi-Komponenten gefunden. Hiermit bieten sich gerade im Grid bereich weitere schöne möglichkeiten (alternierende Farbe ....)an einfach einmal ausprobieren, ich war begeistert. ![]() mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz