1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| unit uModeleTypeList;
interface
uses Classes;
type
TModeleType = Double; // A Titre d'Exemple ... tu peur mettre Layer_line
PModeleType = ^TModeleType;
TModeleTypeList = class(TList)
protected
function GetItem(const Index: Integer): TModeleType;
procedure SetItem(const Index: Integer; const Value: TModeleType);
public
function Add(const AModeleType: TModeleType): Integer;
procedure Clear; override;
procedure Delete(const Index: Integer);
procedure Insert(const Index: Integer; const AModeleType: TModeleType);
function First: TModeleType;
function Last: TModeleType;
// Propriétés
property Items[const Index: Integer]: TModeleType read GetItem write SetItem; default;
end;
implementation
// TModeleTypeList -------------------------------------------------------------
// -
// TModeleTypeList - Protected -
// -
// TModeleTypeList -------------------------------------------------------------
// TModeleTypeList - Protected -------------------------------------------------
function TModeleTypeList.GetItem(const Index: Integer): TModeleType;
begin
// On veut une Structure ModeleType, et n'ont pas un pointeur, donc déférencement (^)
Result := PModeleType(inherited Items[Index])^;
end;
// TModeleTypeList - Protected -------------------------------------------------
procedure TModeleTypeList.SetItem(const Index: Integer; const Value: TModeleType);
begin
// On veut une Structure ModeleType, et n'ont pas un pointeur, donc déférencement (^)
PModeleType(inherited Items[Index])^ := Value;
end;
// TModeleTypeList -------------------------------------------------------------
// -
// TModeleTypeList - Public -
// -
// TModeleTypeList -------------------------------------------------------------
// TModeleTypeList - Public ----------------------------------------------------
function TModeleTypeList.Add(const AModeleType: TModeleType): Integer;
var
TmpModeleType: PModeleType;
begin
New(TmpModeleType);
TmpModeleType^ := AModeleType;
Result := inherited Add(TmpModeleType);
end;
// TModeleTypeList - Public ----------------------------------------------------
procedure TModeleTypeList.Clear;
var
Index: Integer;
begin
for Index := Count - 1 downto 0 do begin
if Assigned(inherited Items[Index]) then begin
Dispose(PModeleType(inherited Items[Index]));
end;
end;
inherited Clear();
end;
// TModeleTypeList - Public ----------------------------------------------------
procedure TModeleTypeList.Delete(const Index: Integer);
begin
Dispose(PModeleType(inherited Items[Index]));
inherited Delete(Index);
end;
// TModeleTypeList - Public ----------------------------------------------------
procedure TModeleTypeList.Insert(const Index: Integer; const AModeleType: TModeleType);
var
TmpModeleType: PModeleType;
begin
New(TmpModeleType);
TmpModeleType^ := AModeleType;
inherited Insert(Index, TmpModeleType);
end;
// TModeleTypeList - Public ----------------------------------------------------
function TModeleTypeList.First: TModeleType;
begin
// On veut un ModeleType, et n'ont pas un pointeur, donc déférencement (^)
Result := PModeleType(inherited First())^;
end;
// TModeleTypeList - Public ----------------------------------------------------
function TModeleTypeList.Last: TModeleType;
begin
// On veut un ModeleType, et n'ont pas un pointeur, donc déférencement (^)
Result := PModeleType(inherited Last())^;
end;
end.
end. |