Страница 1 из 1

FieldsEditor в TVirtualTable

Добавлено: Пн 18 авг 2014 12:55
mediv
Всем привет, нужна помощь, столкнулся с такой ситуацией:

Работал с БД, загрузил данные в VirtualTable, добавил еще 3 Lookup поля, все работало, как надо, но вот встала ситуация и от базы пришлось отказаться, сгрузил все в xml файлы и начал работать с ними, возникла проблема - моих Lookup полей нет!!! что видимо логично, т.к. структура грузится из xml файла, а там только поля из FieldDefs, как я могу кодом задать FieldsEditor и, соответственно, создать свои 3 Lookup поля?

Спасибо.

Re: FieldsEditor в TVirtualTable

Добавлено: Пн 18 авг 2014 13:52
mediv
Пробую так сделать :

Код: Выделить всё

// Загрузка пользователей
procedure TDM.LoadUserAccounts;
  var StructName : TField;
begin
  StructName                   := TField.Create(UserVirtualTable);
  StructName.FieldName         := 'STRUCT_NAME';
  StructName.SetFieldType(ftString);
  StructName.FieldKind         := fkLookup;
  StructName.LookupDataSet     := StructUnitsRefVirtualTable;
  StructName.KeyFields         := 'STRUCT_ID';
  StructName.LookupKeyFields   := 'ID';
  StructName.LookupResultField := 'NAME';
  StructName.Visible           := True;
//
  UserVirtualTable.LoadFromFile('src\xml\adm\Users.xml', true);
//
  UserVirtualTable.Fields.Add(StructName);
//
  UserVirtualTable.Open;
end;
возникает ошибка!

Re: FieldsEditor в TVirtualTable

Добавлено: Вт 19 авг 2014 13:04
ViktorV
Здравствуйте,

Для создания 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;

Re: FieldsEditor в TVirtualTable

Добавлено: Вт 19 авг 2014 14:35
mediv
Спасибо.

Re: FieldsEditor в TVirtualTable

Добавлено: Ср 20 авг 2014 08:11
ViktorV
Если возникнут новые вопросы, пожалуйста, обращайтесь.