AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sortierung von Spalten im DBGrid mit Anzeige eines Pfeils...
Thema durchsuchen
Ansicht
Themen-Optionen

Sortierung von Spalten im DBGrid mit Anzeige eines Pfeils...

Ein Thema von Glühwürmchen · begonnen am 8. Nov 2005 · letzter Beitrag vom 9. Dez 2005
Antwort Antwort
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#1

Sortierung von Spalten im DBGrid mit Anzeige eines Pfeils...

  Alt 8. Nov 2005, 11:06
Datenbank: Oracle • Version: 10 • Zugriff über: Client / Server
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:
      PfeilBmp:= TBitmap.Create;
      ImageList1.GetBitmap(0, PfeilBmp);
      if Assigned(PfeilBmp) then TDBGrid(Column.Grid).Canvas.Draw(100, 0,PfeilBmp);
      PfeilBmp.Free;
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).

Da fehlt wohl noch was - aber was?

Und wie finde ich heraus wohin er genau das BitMap setzen soll?
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil

  Alt 8. Nov 2005, 12:38
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil

  Alt 8. Nov 2005, 13:19
Dieser Code wird im OnTitleClick-Event des TDBGrids ausgeführt.

Zitat:
Er muss natürlich in einer Paint-Routine des Controls ausgeführt werden und darf nicht beim Klicken der Titelzeile ausgeführt werden.
Verstehe ich jetzt nicht. Der Pfeil soll doch nach dem Klick auf die TitelZelle erscheinen.
Wie müßte das richtig aussehen?
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil

  Alt 8. Nov 2005, 14:10
Zitat von Glühwürmchen:
Dieser Code wird im OnTitleClick-Event des TDBGrids ausgeführt.

Zitat:
Er muss natürlich in einer Paint-Routine des Controls ausgeführt werden und darf nicht beim Klicken der Titelzeile ausgeführt werden.
Verstehe ich jetzt nicht. Der Pfeil soll doch nach dem Klick auf die TitelZelle erscheinen.
Danach und auch nach jedem neuzeichen des Controls
Zitat von Glühwürmchen:
Wie müßte das richtig aussehen?
Eine Möglichkeit des selbst Zeichnen
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
rainer4you

Registriert seit: 19. Okt 2005
3 Beiträge
 
#5

Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil

  Alt 1. Dez 2005, 11:32
DefaultDrawing:= False; // in den Eigenschaften des DBGrid

dann unter OnColumnDrawCell eine eigen Zeichenroutine schreiben.

Delphi-Quellcode:
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;
Dein Pfeil verschwindet sonst immer weil er einfach nochmals überzeichnet wird.

mfg, silence
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#6

Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil

  Alt 8. Dez 2005, 10:37
Hallo Glühwürmchen,
falls du immer noch nach einer Lösung suchst hätte ich was anzubieten.
alex
Alexander
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#7

Re: Sortierung von Spalten im DBGrid mit Anzeige eines Pfeil

  Alt 9. Dez 2005, 09:41
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.

http://sourceforge.net/project/showf...group_id=45786

mfg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz