Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 

Re: TList ableiten - Pointer -> eigener Pointertyp

  Alt 25. Jul 2006, 19:01
man kann sich übrigens die eine Schrubbelzeile :
{$DEFINE TYPED_LIST_TEMPLATE} sparen, wenn man die Unit auf folgende Art und Weise verwendet.
Damit wird die Benutzung auch einfacher (und verständlicher)
Werde sie aber aus den oben genannten Gründen dann doch nicht verwenden und mir schon gar nicht eine Bibliothek aufbauen oder so, ich stetze da mal auf die Livetempletes der IDE von 2006. Scheint mir zukunftssicherer.
Wieder einen Nachmittag umsonst rumgefummelt
bezieht sich darauf: http://www.dummzeuch.de/delphi/objec...s/deutsch.html

Delphi-Quellcode:
unit u_MemoList;

interface

uses
  Sysutils,
  Classes,
  Contnrs,
  StdCtrls;


type
  _TObjectListItem = TMemo;
    {$I templateTListU.pas}
  TMemoList = class(_TObjectList)
  end;


implementation
  {$I templateTListU.pas}

und die implementation

Delphi-Quellcode:
{$IFDEF DEVELOP_NEVER}  // never define
unit templateTListU;

interface


uses
  Sysutils,
  Classes,
  Contnrs;

type
  _TObjectListItem = TObject;
{$ENDIF DEVELOP_NEVER}


{$IFDEF _DECLARE_SECOND_PASS}
   {$DEFINE _SECOND_PASS}
   {$UNDEF _DECLARE_SECOND_PASS}
{$ENDIF _DECLARE_SECOND_PASS}



{$IFNDEF _SECOND_PASS}
type

  _TObjectlist = class
  private
  protected
    fList: TObjectList;
    function GetItems(_Idx: integer): _TObjectListItem;
    function GetCount: integer;
  public
    constructor Create;
    destructor Destroy; override;
    function Add(_Item: _TObjectListItem): integer;
    function Remove(_Item: _TObjectListItem): integer;
    procedure Clear;
    property Items[_Idx: integer]: _TObjectListItem read GetItems; default;
    property Count: integer read GetCount;
  end;
{$DEFINE _DECLARE_SECOND_PASS}
{$ENDIF _SECOND_PASS}


{$IFDEF DEVELOP_NEVER}
implementation
{$ENDIF DEVELOP_NEVER}


{$IFDEF _SECOND_PASS}


{ _TObjectlist }

constructor _TObjectlist.Create;
begin
  inherited Create;
  fList := TObjectList.Create;
end;

destructor _TObjectlist.Destroy;
begin
  fList.Free;
  inherited;
end;

function _TObjectlist.Add(_Item: _TObjectListItem): integer;
begin
  Result := fList.Add(_Item);
end;

function _TObjectlist.Remove(_Item: _TObjectListItem): integer;
begin
  Result := fList.Remove(_Item);
end;

procedure _TObjectlist.Clear;
begin
  fList.clear;
end;

function _TObjectlist.GetItems(_Idx: integer): _TObjectListItem;
begin
  Result := fList[_Idx] as _TObjectListItem;
end;

function _TObjectlist.GetCount: integer;
begin
  Result := fList.Count;
end;
{$UNDEF _SECOND_PASS}
{$ENDIF _Second_PASS}


//{$WARNINGS off}
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat