Announcement

Collapse
No announcement yet.

Sortierrichtung in Listview anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sortierrichtung in Listview anzeigen

    Hallo...

    Kann man in einem Listview im Header anzeigen nach welcher Spalte gerade, und in welcher Richtung sortiert ist?

    m.f.G. Andreas Käding

  • #2
    Hallo Andreas,<BR><BR>

    Du brauchts zwei Komponente: ListView (von TListView) und ImageList (von TImageList). Die Eigenschaft "ViewStyle" von ListView wird auf vsReport gesetzt. Der Eigenschaft "SmallImages" wird die ImageList zugewiesen. Dann definiert man paar Spalten (Eigenschaft "Columns").<BR>
    In die ImageList werden zwei Bildchen (ambesten Pfeile "Down" und "Up") hinzugefügt. Wenn man die Komponente (ImageList) doppelcklick, erscheint ein Dialog, der es erlaubt, die Bilder hizuzufügen.<BR>
    Ich nehme an, die Daten werden sortiert, wenn man auf eine Spalte klick. In diesem Fall muss der Eireignis "OnColumnClick" bearbeitet werden.

    Beispiel:<BR><BR>

    <PRE><CODE>

    type
    TfrmHaupt = class(TForm)
    ListView: TListView;
    ImageList: TImageList;
    procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);
    procedure FormCreate(Sender: TObject);
    private
    fAColumn:TListColumn;//Aktieve Spalte
    fSortRichtung:Byte;//0 - für Down, 1 - für Up
    { Private-Deklarationen }
    protected
    public
    { Public-Deklarationen }
    end;

    var
    frmHaupt: TfrmHaupt;
    implementation

    {$R *.DFM}

    procedure TfrmHaupt.FormCreate(Sender: TObject);
    begin
    fAColumn:=nil;
    fSortRichtung:=0;
    end;

    procedure TfrmHaupt.ListViewColumnClick(Sender: TObject;
    Column: TListColumn);
    begin
    if fAColumn=Column then begin//Wenn die Aktuelle Spalte gedruckt wurde
    if fSortRichtung=0 then //dann die Sortierrichtung ändern
    fSortRichtung:=1
    else
    fSortRichtung:=0;
    end else begin// Wenn nicht
    fSortRichtung:=0; // Dann die SortRichtung auf 0 (Down)
    if fAColumn<>nil then
    fAColumn.ImageIndex:=-1;
    end;
    fAColumn:=Column;// Gedruckte Spalte wird zur aktuellen
    Column.ImageIndex:=fSortRichtung;
    end;

    </PRE></CODE&gt

    Comment


    • #3
      Hallo!

      Danke, das war genau das was ich gesucht habe!

      Gruß A.K

      Comment

      Working...
      X