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.