| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > создание TField run time |
| Автор: Sharl 21.1.2005, 12:31 |
| Программное создание объектов класса TField в TTable или TQuery Как это делается??? |
| Автор: Дрюча 21.1.2005, 12:52 | ||
Создать TField... может так...
Может конкретнее задачу поставите... |
| Автор: Akella 21.1.2005, 13:41 | ||
|
| Автор: Bes 21.1.2005, 13:49 |
| Было бы интересно узнать, для чего это может понадобиться? Не разу не задавался таким вопросом.... |
| Автор: Sharl 21.1.2005, 14:29 |
| Конечная цель токова. Отображать в DBGrid -е только те поля таблицы, которые заданы извне. Т.е. поля должны быть выявлены только по ходу работы приложения. Для этого, думаю, в таблице ( TTable ) эти поля добавлять динамичевки. var f:TIntegerField; begin ff := TIntegerField.Create(Table1); ff.FieldKind := fkData; ff.DisplayLabel := 'NewField'; ff.FieldName := 'aa'; Table1.Fields.Add(ff); ................. Ну и что потом??? Как создать ссылку на это поле ( если конечно таким образом это поле в Table1 создано) в DBGrid -е??? |
| Автор: Дрюча 21.1.2005, 14:45 | ||
А не проще бы завести какой-нибудь другой идентификатор? Например:
|
| Автор: Bes 21.1.2005, 15:45 |
| 2Sharl: Слушай, дак не проще ли выбирать только нужные поля select-ом если работаешь через Query (что на мой взгляд предпочтительнее) или добавить в dbGrid все поля сразу и потом делать их видимыми-невидимыми.... Или я чего-то не пойму... |
| Автор: Sharl 21.1.2005, 16:50 |
| Bes и Дрюча Да, конечно, то что вы описываете, и проще и удобнее, но нужно, чтобы некоторые поля в grid-е показывались как lookup combobox. вот в этом и вся проблема, т.е. нужно динамически менять свойства поля query типа LookupKeyFields и т.п., что и не удается. |
| Автор: Дрюча 21.1.2005, 16:59 |
| А что именно не удается? Создать или еще что-нить... привиди неработающий свой пример... |
| Автор: Sharl 21.1.2005, 17:24 |
| Нашел способ для удовлетворения моих нужд. Это компонент TDBCtrlGrid. На нем можно динамически создавать ту функциональность, что требовалась от меня. Но все-таки , попробуем получить такое. В DB1 базе есть таблица "TA"с полями "F1,F2,F3". В форме есть компонент Table1 : TTable. Table1.DataBaseName := 'DB1'; Table.TableName := 'TA' ; Table1.Fields.Remove(Table1.FieldByName('F1')); Как потом снова запихнуть поле 'F1' обратно в Table1 ? |
| Автор: Дрюча 21.1.2005, 17:26 |
| Обновить таблицу и спихнуть ненужное... |
| Автор: Akella 21.1.2005, 17:35 |
| Table1.Fields.add попробуй такое или Table1.Fields.insert |
| Автор: Sharl 23.1.2005, 14:29 | ||
Так вот, это все делается вот так.
разумеется 'Lookup field','KeyFields', 'LookupKeyFields', 'LookupResultField' это имена полей таблиц. |