AGB  ·  Datenschutz  ·  Impressum  







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

ListView "abhängig" sortieren

Ein Thema von Yheeky · begonnen am 1. Mär 2004 · letzter Beitrag vom 2. Mär 2004
Antwort Antwort
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

ListView "abhängig" sortieren

  Alt 1. Mär 2004, 20:18
Hi,

also ich habe eine ListView, die sowohl eine Datum- und ein Uhrzeitspalte hat. Beim Sortieren sollen diese beiden Spalten "abhängig" sein. Beispiel: Ich sortiere die ListView nach dem aktuellen Datum. Wenn ich nun die Uhrzeit sortieren will, soll nicht nur die Uhrzeit berücksichtig werden, sondern die Datumsortierung soll immer noch aktuell sein. Wie kann man das mit Code bewerkstelligen oder gibt´s dafür sogar eine Einstellmöglichkeit?

Gruß Yheeky
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: ListView "abhängig" sortieren

  Alt 1. Mär 2004, 20:34
ich hatte sowas auch mal gebraucht und ich habe folgendes gemacht

1. globale variablen
sortcol: integer;
ascending_sort: boolean;

2 dann schreibst du folgende events im listview

Code:
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);

   var hItem: TListItem;
begin
  // swap items hier vertausche ich jenachdem die itemns fuer einaml auf und dann ab
  if ascending_sort then begin
    hItem := Item1;
    Item1 := Item2;
    Item2 := hItem;
  end;

  case SortCol of
    0:
      begin
     // nothing to do
      end;
    1: // string
      begin
        Compare := CompareStr(Item1.SubItems[SortCol - 1],
          Item2.SubItems[SortCol - 1]);
      end;
    2: //string
      begin
        Compare := CompareStr(Item1.SubItems[SortCol - 1],
          Item2.SubItems[SortCol - 1]);
      end;
    3: //integer
      begin
        Compare := (StrToInt(Item1.SubItems[SortCol - 1]) -
          StrToInt(Item2.SubItems[SortCol - 1]));
      end;
    4: //currency
      begin
        Compare := Trunc((StrToCurr(Item1.SubItems[SortCol - 1]) * 100) -
          (StrToCurr(Item2.SubItems[SortCol - 1]) * 100));
      end;     *)
    5: //Datum + Zeit
      begin
        Compare := trunc(((StrToDate(Item1.SubItems[SortCol - 1]) + StrToTime(Item1.SubItems[SortCol])) * 10000) -
          ((StrToDate(Item2.SubItems[SortCol - 1]) + StrToTime(Item2.SubItems[SortCol])) * 10000));
      end;

    6: //Zeit
      begin
        Compare := Trunc(StrToTime(Item1.SubItems[SortCol - 1]) * 10000 -
          StrToTime(Item2.SubItems[SortCol - 1]) * 10000);
      end;
  end; //case


end;
für dich hier interessant das handling fuer die 5te und 6te spalte
vorsicht mit meinem [SortCol - 1] bei click auf 0.te spalte gibts natuerlich
eins auf die muetze

Code:
// wir merken uns welche column geclickt wurde
procedure TForm1.ListView1ColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  SortCol := Column.Index;
  ListView1.AlphaSort;
  ascending_sort := not ascending_sort;
end;

wenn du auf auf/ab verzichten willst kannste auch auf SortCol verzichten und
nimmst oben bezug auf Column.index
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#3

Re: ListView "abhängig" sortieren

  Alt 1. Mär 2004, 20:49
Mhmm, irgendwie rutscht da immer noch ein Datum dazwischen, was da nicht hingehört...
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: ListView "abhängig" sortieren

  Alt 1. Mär 2004, 21:09
das muesste es doch eigentlich tun oder?

Code:
 5: //Datum + Zeit
      begin
        Compare := trunc(((StrToDate(Item1.SubItems[SortCol - 1]) + StrToTime(Item1.SubItems[SortCol])) * 10000) - 
          ((StrToDate(Item2.SubItems[SortCol - 1]) + StrToTime(Item2.SubItems[SortCol])) * 10000));

ich habe 2 spalten in meinem listview
Code:
Datum       Zeit
10.10.03     23:00
11.04.04     17:00
05.03.03     19:00
im grid selber stehen strings also konvertieren wir mit StrToDate das Datum und StrtoTime die zeit * faktor 10000 um den anteil ein bißchen hoeher zu gewichten

ich meine bei mir funzt es! oder etwa nicht?
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#5

Re: ListView "abhängig" sortieren

  Alt 2. Mär 2004, 15:05
Ne, also bei mir funktioniert das nicht so wirklich. Muss ich da vielleicht noch was besonderes beachten?
  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 08:58 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