Habe mir Diese Thema nun schon 9 mal durchgelsesen.. und steige da einfahc nicht hinter.. währe nett wenn es jemand noch mal füür dumme erklären würde....
An sich habe ich das selbe Problem....
allergings habe ich keinen plan wie die eizelneen sachen aber definiert werden müssen.
also ich möchte auch erreichen das die sortierfunktion in einer klasse ist, damit ich davon mehrere instanzen erzeugen kann...
bekomme ich diese fehlermeldung:
[DCC Fehler] ExtGrid.pas(253): E2009 Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger'
der Quelltext sieht folgenermaßenn aus:
Delphi-Quellcode:
Type TExtStrGrid=Class
SortCol:integer;
SortDir:integer;
PicUp:TImage;
PicDown:TImage;
LastDummy:boolean;
SRow:integer;
mausdown:boolean;
Function CompareStringGridRows(item1,item2: Pointer):integer;
Procedure DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure SortGrid(thegrid: TStringGrid; const col: integer);
Constructor Create;
destructor Destroy;
end;
implementation
..
..
..
Function TExtStrGrid.CompareStringGridRows(item1,item2: Pointer):integer;
var c1,c2: ^char;
n1,n2: integer;
begin
c1 :=@TStrings(item1).Strings[sortcol][1];
c2 :=@TStrings(item2).Strings[sortcol][1];
while (c1^ <>#0) and (c2^ <>#0) do
begin
if ((c1^ in ['0'..'9']) and (c2^ in ['0'..'9'])) then
begin
n1 :=0;
n2 :=0;
while (c1^ in ['0'..'9']) do
begin
..
..
..
procedure TextStrGrid.SortGrid(thegrid: TStringGrid; const col: integer);
var rows: TList;
id,i,j: integer;
tmp: TStrings;
tmp_row:string;
begin
try
rows :=TList.Create;
rows.Capacity :=thegrid.RowCount-thegrid.fixedrows;
for i:=theGrid.fixedrows to thegrid.RowCount -1 do
begin
tmp :=TStringList.Create;
for j:=0 to thegrid.ColCount-1 do
tmp.AddObject(thegrid.cells[j,i],thegrid.Objects[j,i]);
thegrid.Rows[i].Clear;
rows.Add(tmp);
end;
rows.Sort(CompareStringGridRows); // Hier die Fehlermeldung..
for i:=thegrid.fixedrows to thegrid.RowCount -1 do begin