AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[VirtualStringTree] Sortierung Frage.

Ein Thema von DIET3RIX · begonnen am 7. Apr 2007 · letzter Beitrag vom 7. Apr 2007
Antwort Antwort
DIET3RIX

Registriert seit: 21. Feb 2006
Ort: Bonn
78 Beiträge
 
Delphi 2007 Professional
 
#1

[VirtualStringTree] Sortierung Frage.

  Alt 7. Apr 2007, 15:50
Hallo Leute,

Ich benutze die VirtualStringTree Komponente und habe eine Frage zur Sortierung.

Wenn ich auf MainColumn klicke, dann wird das zwar sortiert, aber sieht ca. so aus:

1
10
100
101
...
110
111
...
2
20
usw.

Wie kann ich nach "1,2,3,4 ... 99,100,101" usw Sortieren?

THX voraus

Hier der Code (aus der Beispieldatei):

Delphi-Quellcode:
procedure TMain_Form.VST_DBHeaderClick(Sender: TVTHeader;
  Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  if Button = mbLeft then
  begin
    with Sender do
    begin
      if Column <> MainColumn then
        SortColumn := NoColumn
      else
      begin
        if SortColumn = NoColumn then
        begin
          SortColumn := Column;
          SortDirection := sdAscending;
        end
        else
          if SortDirection = sdAscending then
            SortDirection := sdDescending
          else
            SortDirection := sdAscending;
        Treeview.SortTree(SortColumn, SortDirection, False);
      end;
    end;
  end;
end;
Delphi-Quellcode:
procedure TMain_Form.VST_DBCompareNodes(Sender: TBaseVirtualTree; Node1,
  Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
var
  Data1, Data2: PTreeData;
begin
  Data1 := Sender.GetNodeData(Node1);
  Data2 := Sender.GetNodeData(Node2);
  Result := CompareText(Data1.ID, Data2.ID);
end;
Dieter
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: [VirtualStringTree] Sortierung Frage.

  Alt 7. Apr 2007, 16:01
Hallo,

es sollte genügen, die Vergleichsroutine anzupassen. Falls die IDs nur ganzzahlige Werte enthalten, geht es so:

Delphi-Quellcode:
procedure TMain_Form.VST_DBCompareNodes(Sender: TBaseVirtualTree; Node1,
  Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
var
  Data1, Data2: PTreeData;
begin
  Data1 := Sender.GetNodeData(Node1);
  Data2 := Sender.GetNodeData(Node2);
// Result := CompareText(Data1.ID, Data2.ID);
  Result := StrToInt(Data1.ID) - StrToInt(Data2.ID);
end;
Vielleicht solltest du noch eine Fehlerbehandlung vorsehen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
DIET3RIX

Registriert seit: 21. Feb 2006
Ort: Bonn
78 Beiträge
 
Delphi 2007 Professional
 
#3

Re: [VirtualStringTree] Sortierung Frage.

  Alt 7. Apr 2007, 16:04


Vielen Dank dir
Dieter
  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 14:38 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