Hi @all <p>
<B>
Nach mehereren Elementen in einem TList Record Object sortieren
</B>
<P>
1.) nach Layer <BR>
2.) nach Footprint <BR>
3.) nach Artnr <BR>
<P>
Recordstruktur
<P>
<PRE>
var gvTemp : TDataCab;
{************************************************* **********************}
type TDataCab = class(TList)
private
fID : Integer;
fDesignator : String;
fFootprint : String;
fMidX : String;
fMidY : String;
fRefX : String;
fRefY : String;
fPadX : String;
fPadY : String;
fLayer : String;
fRotation : String;
fValue : String;
fArtnr : String;
fComment : String;
fVarHubt : String;
fVarStd : String;
function GetData(Index: Integer): TDataCab;
procedure SetData(Index: Integer; const Value: TDataCab);
public
constructor Build;
destructor Eleminate;
property ID:Integer read fID write fID;
property Designator:String read fDesignator write fDesignator;
property Footprint:String read fFootprint write fFootprint;
property MidX:String read fMidX write fMidX;
property MidY:String read fMidY write fMidY;
property RefX:String read fRefX write fRefX;
property RefY:String read fRefY write fRefY;
property PadX:String read fPadX write fPadX;
property PadY:String read fPadY write fPadY;
property Layer:String read fLayer write fLayer;
property Rotation:String read fRotation write fRotation;
property Value:String read fValue write fValue;
property Artnr:String read fArtnr write fArtnr;
property Comment:String read fComment write fComment;
property VarHubt:String read fVarHubt write fVarHubt;
property VarStd:String read fVarStd write fVarStd;
property Items[Index:Integer]:TDataCab read GetData write SetData; default;
end;
<P>
{************************************************* *********************}
type TListSortCompare = function (Item1, Item2: Pointer): Integer;
{************************************************* *********************}
{************************************************* *********************}
function SortToLayer(Item1,Item2:Pointer): Integer; {TListSortCompare}
begin
result := CompareStr(TDataCab(Item1).Layer,TDataCab(Item2).L ayer);
end;
{************************************************* *********************}
function SortToFootprint(Item1,Item2:Pointer): Integer; {TListSortCompare}
begin
result := CompareStr(TDataCab(Item1).Footprint,TDataCab(Item 2).Footprint);
end;
{************************************************* *********************}
function SortToArtikelnr(Item1,Item2:Pointer): Integer; {TListSortCompare}
begin
result := CompareStr(TDataCab(Item1).Artnr,TDataCab(Item2).A rtnr);
end;
{************************************************* *********************}
gvTemp.Sort(SortToLayer);
gvTemp.Sort(SortToFootprint);
gvTemp.Sort(SortToArtikelnr);
</PRE>
Wenn ich nun diese 3 Routinen aufrufe wird aber seperat entweder nach 1 2 oder 3 sortiert. Wäre für jede Hilfe Dankbar. Möchte aber eine verkettete sortierung.
mfg Jan Ohlmann
<B>
Nach mehereren Elementen in einem TList Record Object sortieren
</B>
<P>
1.) nach Layer <BR>
2.) nach Footprint <BR>
3.) nach Artnr <BR>
<P>
Recordstruktur
<P>
<PRE>
var gvTemp : TDataCab;
{************************************************* **********************}
type TDataCab = class(TList)
private
fID : Integer;
fDesignator : String;
fFootprint : String;
fMidX : String;
fMidY : String;
fRefX : String;
fRefY : String;
fPadX : String;
fPadY : String;
fLayer : String;
fRotation : String;
fValue : String;
fArtnr : String;
fComment : String;
fVarHubt : String;
fVarStd : String;
function GetData(Index: Integer): TDataCab;
procedure SetData(Index: Integer; const Value: TDataCab);
public
constructor Build;
destructor Eleminate;
property ID:Integer read fID write fID;
property Designator:String read fDesignator write fDesignator;
property Footprint:String read fFootprint write fFootprint;
property MidX:String read fMidX write fMidX;
property MidY:String read fMidY write fMidY;
property RefX:String read fRefX write fRefX;
property RefY:String read fRefY write fRefY;
property PadX:String read fPadX write fPadX;
property PadY:String read fPadY write fPadY;
property Layer:String read fLayer write fLayer;
property Rotation:String read fRotation write fRotation;
property Value:String read fValue write fValue;
property Artnr:String read fArtnr write fArtnr;
property Comment:String read fComment write fComment;
property VarHubt:String read fVarHubt write fVarHubt;
property VarStd:String read fVarStd write fVarStd;
property Items[Index:Integer]:TDataCab read GetData write SetData; default;
end;
<P>
{************************************************* *********************}
type TListSortCompare = function (Item1, Item2: Pointer): Integer;
{************************************************* *********************}
{************************************************* *********************}
function SortToLayer(Item1,Item2:Pointer): Integer; {TListSortCompare}
begin
result := CompareStr(TDataCab(Item1).Layer,TDataCab(Item2).L ayer);
end;
{************************************************* *********************}
function SortToFootprint(Item1,Item2:Pointer): Integer; {TListSortCompare}
begin
result := CompareStr(TDataCab(Item1).Footprint,TDataCab(Item 2).Footprint);
end;
{************************************************* *********************}
function SortToArtikelnr(Item1,Item2:Pointer): Integer; {TListSortCompare}
begin
result := CompareStr(TDataCab(Item1).Artnr,TDataCab(Item2).A rtnr);
end;
{************************************************* *********************}
gvTemp.Sort(SortToLayer);
gvTemp.Sort(SortToFootprint);
gvTemp.Sort(SortToArtikelnr);
</PRE>
Wenn ich nun diese 3 Routinen aufrufe wird aber seperat entweder nach 1 2 oder 3 sortiert. Wäre für jede Hilfe Dankbar. Möchte aber eine verkettete sortierung.
mfg Jan Ohlmann
Comment