AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit CustomSort in Listview

Ein Thema von kaiser1401 · begonnen am 6. Mär 2006 · letzter Beitrag vom 7. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#1

Problem mit CustomSort in Listview

  Alt 6. Mär 2006, 16:29
Hallo Leute,

ich habe ein kleines Problem: Ich möchte eine Aufgabenverwaltung für mehrere Benutzer schreiben. Diese Aufgaben sollen auch auf einer Übersicht Sortiert nach benutzer und Priorität sortiert werden.

Ich habe mir für die Listview eine Sortierroutine geschrieben die aber nicht so arbeitet wie ich das gerne hätte und ich weis ncith wieso

Die Routine:

Delphi-Quellcode:
 function AuswertungSortProc(Item1, Item2: TListItem; Data: Integer): Integer; stdcall;
   var prio1,prio2:integer;
  begin
    if Item1.Caption <> Item2.Caption then
     Result:=CompareText(Item1.Caption,Item2.Caption)
    else
     begin
      prio1:=strtoint(item1.SubItems[0]);
      prio2:=strtoint(item2.SubItems[0]);
      result:=prio2-prio1;
     end;
    if data = 1 then Result := -Result;
  end;
Der Aufruf:

Delphi-Quellcode:
ListView1.CustomSort(@AuswertungSortProc, 0);
   aufg := Listview1.Items.Add;
   aufg.Caption:=user;
   aufg.SubItems.Add(prio);
   aufg.SubItems.Add(text);
Das Ergebnis sieht dann so aus:

Benutzer | Prio | Text
user1 | 1200 | aufgabe abce...
user1 | 200 | aufgabe 123
user1 | 100 | aufgabe 345
user2 | 120 | aufgebe 876
user1 | 200 | aufgabe cde

sollte aber so aussehen:

Benutzer | Prio | Text
user1 | 1200 | aufgabe abce...
user1 | 200 | aufgabe 123
user1 | 200 | aufgabe cde
user1 | 100 | aufgabe 345
user2 | 120 | aufgebe 876


Kann mir jemand sagen was ich falsch mache??

Ich weis, dass es schon viele Beiträge zum sortieren gibt, aber irgendiwe finde ich da keine Lösung auf mein Problem

dank schon mal im vorraus

-Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#2

Re: Problem mit CustomSort in Listview

  Alt 6. Mär 2006, 16:39
Hi Kaiser1401,

ich hab deinen Code zwar nicht so genau gelesen (du mögest mir doch bitte verzeihen, kann mit fremdem Code meist wenig anfangen ) und bin auch nicht so vertraut mit TListView, aber ich würde sagen, sortier erstmal nur nach User und dann jeden User-Block für sich nach Priorität.

Snuffi
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Problem mit CustomSort in Listview

  Alt 6. Mär 2006, 17:15
Delphi-Quellcode:
function ComparePrio(a,b:integer);
begin
   if a > b then
      result := 1
   else if a = b then
      result := 0
   else
      Result := -1;
end;

function AuswertungSortProc(Item1, Item2: TListItem; Data: Integer): Integer; stdcall;
   var prio1,prio2:integer;
begin
   Result:=CompareText(Item1.Caption,Item2.Caption)
   if Result = 0 then
      Result := ComparePrio(strtoint(item1.SubItems[0]), strtoint(item2.SubItems[0]));
// if data = 1 then Result := -Result; // das würde ich erst mal auskommentieren, sicher ist sicher
end;
Andreas
  Mit Zitat antworten Zitat
kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#4

Re: Problem mit CustomSort in Listview

  Alt 6. Mär 2006, 18:37
Danke schonmal. Werd es nachher mal ausprobieren.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Problem mit CustomSort in Listview

  Alt 6. Mär 2006, 18:46
Das mit Deinem Aufruf ist doch falsch. Die Customsortmethode sortiert nur den Inhalt einer Listview. Du musst doch nach jedem 'Add' die Liste neu sortieren. Oder, wenn Du mehrere Items einfügen willst, am Ende des Einfügevorganges.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#6

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 09:02
Mh, ich hab es jetzt mal mit dem source von shmia ausprobiert. das ergebnis ist zwar etwas anders, aber richtig ist es noch nciht.

@alzaimar: Auch wennn ich die CustomSort nach jedem Punkt den ich einfüge aufrufe bekomme ich kein richtiges Ergebnis.

hat noch jemand eine idee? weiß nämlich absolut nicht warum das so nicht funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 09:14
Zitat von kaiser1401:
Mh, ich hab es jetzt mal mit dem source von shmia ausprobiert. das ergebnis ist zwar etwas anders, aber richtig ist es noch nciht.
Wenn du jetzt sio nett wärst und zu sagen, was nicht richtig ist, dann könnte man dir eventuell sogar helfen.

Zitat:
hat noch jemand eine idee? weiß nämlich absolut nicht warum das so nicht funktioniert.
Siehe oben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#8

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 09:27
Zitat von kaiser1401:
Das Ergebnis sieht dann so aus:

Benutzer | Prio | Text
user1 | 1200 | aufgabe abce...
user1 | 200 | aufgabe 123
user1 | 100 | aufgabe 345
user2 | 120 | aufgebe 876
user1 | 200 | aufgabe cde

sollte aber so aussehen:

Benutzer | Prio | Text
user1 | 1200 | aufgabe abce...
user1 | 200 | aufgabe 123
user1 | 200 | aufgabe cde
user1 | 100 | aufgabe 345
user2 | 120 | aufgebe 876
Das was sich jetzt geändert hat ist, das im Ergebnis (oberer block) Zeile 3 und 4 getauscht sind. Also user2 mittig einsortiert wird.

Ich habe es mal versucht jeweils eine sortierung im source auszuommentieren.

=> Sortierung nur nach user funktioniert einwandfrei
=> Sortierung nur nach prio funktioniert einwandfrei

Aber warum klappt das nicht zusammen
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 09:32
Mach es so:
Schreibe ein Beispielprojekt, das nicht so funktioniert, wie Du es Dir vorstellst und poste das hier. Dann finden wir den Fehler. Garantiert.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 09:33
Die Sortierung müsste so aussehen:

Delphi-Quellcode:
function AuswertungSortProc(Item1, Item2: TListItem; Data: Integer): Integer; stdcall;
   var prio1,prio2:integer;
var
  res: Integer;
begin
   res := CompareText(Item1.Caption,Item2.Caption)
   if (res = 0) and (ComparePrio(strtoint(item1.SubItems[0]), strtoint(item2.SubItems[0]) > 0) then
      Result := ComparePrio(strtoint(item1.SubItems[0]), strtoint(item2.SubItems[0]))
   else
     Result := res;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:19 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