Eine Lookup Liste definieren

Eine Auswahlliste für ein Eingabefeld erstellen:

Definition der Klasse die die Elemente der Auswahlliste enthält:

TUser = class(TStorableObject)
private
  sName : String;
public
  [SOFieldAttribute('USERS.USR_ID', ftAutoInc, 0, [sflPrimaryKey])]
  property ID;
  [SOFieldAttribute('USERS.USR_NAME', ftString, 50)]
  property Name : String read sName write sName;
end;

Liste anlegen und das Lookup definieren:

Definition der Klasse für die Auswahlliste die TUser enthalten soll:

TUserList = class(TStorableObjectList); 

ul := TUserList.Create(TUser, sp);
ul.DefineLookup(vmComboBox, 'USERS.USR_NAME', 'USERS.USR_ID,USERS.USR_NAME', '10,90');

Erläuterung:

Die Tabelle USERS enthält die USR_ID als Autowert Feld und das Feld USR_NAME als VARCHAR(50) für den Benutzernamen.

TUserlist wird als Alias von TStorableObjectList angelegt. Diese Vorgehensweise ist sinnvoll falls später die Klasse TUserList um Funktionalität erweitert werden soll.

Im nächsten Schritt wird eine Instanz von TUserList angelegt. Hierbei wird übergeben für welche Klasse, hier TUser, die Liste verwendet werden soll und welcher StorageProvider benutzt wird. Anschließend erfolgt die Definition der Ansicht der Daten per DefineLookup. Der Parameter vmComboBox besagt, dass die Liste als Dropdown Combobox angezeigt wird. Die Parameterangabe „USERS.USR_NAME“ ist das Feld dessen Inhalt bei der Anzeige der Combobox dargestellt wird. Die Parameterangabe „ USERS.USR_ID,USERS.USR_NAME“ beschreibt die Felder die in der Ausklappliste angezeigt werden. Die Parameterangabe „10,90“ beschreibt die Breite der Spalten in Prozent für die Ausklappliste. Der Inhalt der Lookup-Liste wird automatisch geladen sobald SOView die Daten benötigt. Soll die Liste direkt geladen werden, so muss die Load Methode von TUserList aufgerufen werden.