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 2 von 2     12   
alzaimar
(Moderator)

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

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 09:41
Sehr geehrter Herr Kaiser,

also bei mir funktionierts....

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;

Procedure TForm1.btClick(Sender: TObject);

  Procedure _Add(aUser, aprio, aAufgabe: String);
  Begin
    With lvTest.Items.Add Do Begin
      Caption := aUser;
      SubItems.Add(aPrio);
      SubItems.Add(aAufgabe);
    End;
  End;

Begin
  _Add('user2', '120', 'aufgebe 876');
  _Add('user1', '1200', 'aufgabe abce...');
  _Add('user1', '200', 'aufgabe 123');
  _Add('user1', '100', 'aufgabe 345');
  _Add('user1', '200', 'aufgabe cde');
  lvTest.CustomSort(@AuswertungSortProc, 0);
End;
Nach user aufsteigend, nach Prio absteigend. Wo ist jetzt Dein Problem?

[edit] Code verhübscht [/edit]
"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
 
#12

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 10:03
siht eigentlich nciht viel anders aus als bei mir würd ich sagen.
Ich hab hier mal einen beispiel source der nciht das tut was er soll:

Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    function ComparePrio(a,b:integer):integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 var aufg : TListItem;

 function AuswertungSortProc(Item1, Item2: TListItem; Data: Integer): Integer; stdcall;
   var prio1,prio2:integer;
 begin
   Result:=CompareText(Item1.Caption,Item2.Caption);
   result:= 0;
   if Result = 0 then
    prio1:=strtoint(item1.SubItems[0]);
    prio2:=strtoint(item2.SubItems[0]);
    Result := -Form1.ComparePrio(prio1,prio2);
    //if data = 1 then Result := -Result;
  end;

begin
  // Das hier ist eigentlich eine schleife, aber im Beispiel schreibe ich es mal hard rein:
  ListView1.CustomSort(@AuswertungSortProc, 0);
  aufg := Listview1.Items.Add;
  aufg.Caption:='user1';
  aufg.SubItems.Add('200');
  aufg.SubItems.Add('text1234');
  ListView1.Refresh;
  // Schleifenende
    ListView1.CustomSort(@AuswertungSortProc, 0);
  aufg := Listview1.Items.Add;
  aufg.Caption:='user1';
  aufg.SubItems.Add('1200');
  aufg.SubItems.Add('text1234');
  ListView1.Refresh;

  ListView1.CustomSort(@AuswertungSortProc, 0);
  aufg := Listview1.Items.Add;
  aufg.Caption:='user1';
  aufg.SubItems.Add('100');
  aufg.SubItems.Add('text1234');
  ListView1.Refresh;

  ListView1.CustomSort(@AuswertungSortProc, 0);
  aufg := Listview1.Items.Add;
  aufg.Caption:='user2';
  aufg.SubItems.Add('120');
  aufg.SubItems.Add('text1234');
  ListView1.Refresh;

  ListView1.CustomSort(@AuswertungSortProc, 0);
  aufg := Listview1.Items.Add;
  aufg.Caption:='user1';
  aufg.SubItems.Add('200');
  aufg.SubItems.Add('text1234');
  ListView1.Refresh;

end;

function TForm1.ComparePrio(a,b:integer):integer;
begin
   if a > b then
      result := 1
   else if a = b then
      result := 0
   else
      Result := -1;
end;

end.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#13

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 10:07
Hallo,

schau Dir mal Zeile 35 an. Dann schmeiss diese weg.

Gruß
xaromz
  Mit Zitat antworten Zitat
kaiser1401

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

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 10:37
sorry, hatte ich vergessen wieder rauszunehmen, funktioniert aber immer noch nicht:

user2 | 120
user1 | 1200
user1 | 200
user1 | 100
user1 | 200

werd aber mal eben das von Luckie ausprobieren. hatte ich grade nicht gesehen
  Mit Zitat antworten Zitat
kaiser1401

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

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 11:03
*freu* Das von Luckie hat funktioniert. Dank euch allen für die bemühungen.

bis dann
Kaiser
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Problem mit CustomSort in Listview

  Alt 7. Mär 2006, 12:44
Zitat von kaiser1401:
siht eigentlich nciht viel anders aus als bei mir würd ich sagen.
Doch, denn Du fügst user2 ein, sortierst anschließend aber nicht...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:36 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