Для создания Lookup поля во время выполнения приложения, Вы можете использовать следующий код:
Код: Выделить всё
// Загрузка пользователей
procedure TDM.LoadUserAccounts;
var
StructName: TField;
i: integer;
begin
UserVirtualTable.LoadFromFile('src\xml\adm\Users.xml');
UserVirtualTable.Close;
if UserVirtualTable.Fields.Count = 0 then
for i := 0 to UserVirtualTable.FieldDefs.Count - 1 do
UserVirtualTable.FieldDefs.Items[i].CreateField(UserVirtualTable);
StructName := TStringField.Create(UserVirtualTable);
StructName.FieldName := 'STRUCT_NAME';
StructName.FieldKind := fkLookup;
StructName.LookupDataSet := StructUnitsRefVirtualTable;
StructName.KeyFields := 'STRUCT_ID';
StructName.LookupKeyFields := 'ID';
StructName.LookupResultField := 'NAME';
StructName.Visible := True;
StructName.DataSet := UserVirtualTable;
UserVirtualTable.FieldDefs.Add(StructName.FieldName, ftString, 90, False);
UserVirtualTable.Open;
end;