Verwendung von TStorableObjectList

In dem folgenden Programmbeispiel wird erläutert wie man die Klasse TStorableObjectList verwendet.

program ListTest;

interface

uses SOUnit, SOStorageProviderADOUnit; 

type 
  // Klassendefinition für Customer
  
  [SOTable('CUSTOMER')]
  TCustomer = class(TStorableObject)
  private
    sName : String;
    sSurname : String;
    sZip : String;
    sStreet : String;
    sPlace : String;

    procedure SetName(Value : String);
    procedure SetSurname(Value : String);
    procedure SetZip(Value : String);
    procedure SetStreet(Value : String);
    procedure SetPlace(Value : String);
  public
    [SOField('CUS_ID', ftAutoInc, 0, [sflPrimaryKey])]
    property ID;

    [SOField('CUS_NAME', ftString, 50, [sflSort])]
    property Name : String read sName write SetName;

    [SOField('CUS_SURNAME', ftString, 50, [sflSort])]
    property Surname : String read sSurname write SetSurname;

    [SOField('CUS_ZIP', ftString, 10)]
    property Zip : String read sZip write SetZip;

    [SOField('CUS_STREET', ftString, 255)]
    property Street : String read sStreet write SetStreet;

    [SOField('CUS_PLACE', ftString, 100)]
    property Place : String read sPlace write SetPlace;
  end;

  // Liste für Customer definieren
  TCustomerList = class(TStorableObjectList<TCustomer>);

implementation

{ TSOCustomer }

procedure TCustomer.SetName(Value : String);
begin
 UpdateValue(sName,Value);
end;

procedure TCustomer.SetSurname(Value : String);
begin
 UpdateValue(sSurname,Value);
end;

procedure TCustomer.SetZip(Value : String);
begin
 UpdateValue(sZip,Value);
end;

procedure TCustomer.SetStreet(Value : String);
begin
 UpdateValue(sStreet,Value);
end;

procedure TCustomer.SetPlace(Value : String);
begin
 UpdateValue(sPlace,Value);
end;

// Testroutine
var 
 sp : TStorageProviderADODB;

procedure LoadCustomers;

var cus : TCustomer;
    cl : TCustomerList;

begin
  // Liste für Customer erzeugen
  
  cl := TCustomerList.Create(TCustomer, sp);

  // Lade alle Customer
  cl.Load;

  // Customer ausgeben
  for cus in cl do 
    writeln(cus.Name,' ',cus.SurName);

  cl.Free;
end;

begin
  sp := TStorageProviderADODB.Create(sodbtAccess, 0, adoConn);
  TCustomer.InitTable(sp);
end.