Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Record Verwalten - Wie am besten ?

  Alt 2. Mai 2011, 23:51
Hi,

dafür bietet sich ein Array Property an.
Allerdings würde ich das auch über eine Klasse lösen, ungefähr so:
Delphi-Quellcode:
unit MyClasses;

interface

uses
  Contnrs, SysUtils;

type
  TItem = class(TObject)
  private
    FTitel: string;
    FHandle: Integer;
  public
    property Titel: string read FTitel write FTitel;
    property Handle: Integer read FHandle write FHandle;
  end;

type
  TItemList = class(TObject)
  private
    FItems: TObjectList;
    function GetItems(Index: Integer): TItem;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Add(const ATitel: string; AHandle: Integer);
    procedure Clear;
    function Count: Integer;
    function ItemByName(AName: string): TItem;
    property Items[Index: Integer]: TItem read GetItems;
  end;

implementation

constructor TItemList.Create;
begin
  inherited;
  FItems := TObjectList.Create(True);
end;

destructor TItemList.Destroy;
begin
  FItems.Free;
  inherited Destroy;
end;

procedure TItemList.Add(const ATitel: string; AHandle: Integer);
Var
  AItem: TItem;
begin
  AItem := TItem.Create;
  AItem.Titel := ATitel;
  AItem.Handle := AHandle;
  FItems.Add(AItem);
end;

procedure TItemList.Clear;
begin
  FItems.Clear;
end;

function TItemList.Count: Integer;
begin
  Result := FItems.Count;
end;

function TItemList.GetItems(Index: Integer): TItem;
begin
  Result := TItem(FItems[Index]);
end;

function TItemList.ItemByName(AName: string): TItem;
Var
  i: Integer;
begin
  Result := nil;
  for i := 0 to Count - 1 do
  if SameText(FItems[i], AName) then
  begin
    Result := Items[i];
    Exit;
  end;
end;

end.
Ich glaube nur, dass Delphi 6 noch keine TObjectList hatte, oder?
Dann muss natürlich ein TList herhalten, und beim Delete und Clear die Freigabe des Objektes mit erfolgen.

Frank
Frank Reim

Geändert von dataspider ( 2. Mai 2011 um 23:53 Uhr)
  Mit Zitat antworten Zitat