![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое создание Lookup полей. [D6]
PAI © (2005-08-09 16:32:00)Что-то никак не удаётся создать динамически Lookup -поле.
Это вообще возможно, или как..?
hope (2005-08-17 07:45:00) [1]Динамическое создание полей, вообще не особо тривиально, особенно если вы пользуетесть запросами или клиентскими датасетами. Дело в том что список полей Fields - заполняется либо из FieldDefs либо пользователем. Первый случай присходит тогда и только тогда, когда вы сами не вносите изменеий в Fields, но и FieldDefs заполняется полями автоматически, только если вы его сами не изменили.
Поэтому, если вам надо добавить поле в набор данных, особенно Lookup (потому как при его создании производится проверка наличи\ всег полей, на которые он ссылается) то у вас только один вариант - ЗАПОЛНИТЬ Fields самостоятельно до открытия набора.
Самый простой способ:
With DataSet do
begin
FieldDefs.Update;
FieldDefs.Add(Name + 'MyFieldName', ftString{например});
for I := 0 to FieldDefs.Count-1 do
FieldDefs[I].CreateField(FieldDefs.Dataset);
with FieldByName('MyFieldName') do
begin
FieldKind := fkLookup;
KeyFields := {список ключевых полей основного набора};
LookupDataSet := {какой-то датасет};
LookupKeyFields := {список ключевых полей LookupDataset};
LookupResultField := {имя отоюражаемого поля из LookupDataset};
end;
Open;
end;
sniknik (2005-08-09 16:39:00) [2]однозначно.
вообще созданое в "дизайне" в итоге тот же самый "рантаймовский" код, но сделанный за тебя дядей Борландом.