Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическое создание 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]

однозначно.
вообще созданое в "дизайне" в итоге тот же самый "рантаймовский" код, но сделанный за тебя дядей Борландом.


Наверх

Титульная страница Поиск, карта сайта Написать письмо