TStorableObject.RegisterLinkedClass

Über die Methode RegisterLinkedClass kann eine TStorableObject-Klasse  mit einer weiteren von TStorableObject abgeleiteten Klassen verbunden werden.

Dies ist z.B. nützlich wenn Klassen Statuswerte enthalten und diese in einer weiteren Klasse gespeichert sind. Wird die Methode Load der Klasse aufgerufen, so werden automatisch alle verknüpften Klassen mit geladen. Dies bedeutet, dass die im unten aufgeführten Beispiel verknüpfte Klasse TCustomerStates in der Property State die aktuellen Statuswerte enthält.

Beispiel:

Die Klasse TCustomer enthält einen Statuswerte. Diese werden in einer Klasse TCustomerStates gespeichert.

// Definition der Klasse TCustomerStates :

[SOTable('CUSTOMER_STATES')]
TCustomerStates = class(TStorableObject)
private
  iNo : Integer;
  sName: String;
public
  [SOFieldAttribute('CS_ID', ftAutoInc, 0, [sflPrimaryKey])]
  property ID;
  [SOFieldAttribute('CS_NO', ftInteger, 0)] 
  property No: Integer read iNo write iNo;

  [SOFieldAttribute('CS_NAME', ftString, 50)]
  property Name: String read sName write sName;
end;

// Definition der Klasse TCustomer :

TCustomer = class(TStorableObject)
private
 csState : TCustomerStates; 
 .
 .
public
  property State : TCustomerStates read csState write csState;
end;

begin
  // Verknüpfe die Klasse TCustomer mit der Klasse TCustomerStates über das Feld aus der Tabelle "CUSTOMER_STATES" "CUS_STATE_NO"
  TCustomer.RegisterLinkedClass(TCustomerStates, StorageProvider, 'CUS_STATE_NO','CS_NO');
end.