Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.24;
Скачать: CL | DM;

Вниз

Можно ли создать объект-поле класса TField динамически?   Найти похожие ветки 

 
User_OKA ©   (2002-10-02 08:34) [0]

С помощью редактора полей все гладко и красиво, на на этапе конструирования список полей мне неизвестен, т.к. я использую один TpFIBDataSet для нескольких таблиц. А хочется и лишние поля скрыть, и LookUp-поля организовать (колонки TDBGrid с PickList что-то не хочется).
Знаю, что если объект-поля не созданы, они создаются автоматически, а как до них достучаться? По имени TpFIBDataset.Name+<имя поля> не получается.


 
Max Zyuzin ©   (2002-10-02 08:58) [1]

А по порядковому номеру пробовали? Я по опыту работы с TIBDataSet... что то вроде MyIBDataSet.Fields[x]. и т.д.


 
User_OKA ©   (2002-10-02 09:57) [2]

Max Zyuzin © (02.10.02 08:58)
Не то. Через MyIBDataSet.Fields[x] я получу доступ к значению поля с номером x. А мне нужно изменять/настраивать само поле.


 
Johnmen ©   (2002-10-02 09:58) [3]

FieldByName уже отменили ?


 
antdrnc   (2002-10-02 10:12) [4]

Попробуйте использовать TDataSet.FieldDefs.

Query1.Close;
Query1.FieldDefs.Update;
for i:=0 to Query1.FieldDefs.Count-1 do
if (...) then
Query1.FieldDefs.Items[i].CreateField(Query1);
Query1.Open;


 
Sergey13 ©   (2002-10-02 10:57) [5]

2User_OKA © (02.10.02 08:34)
> я использую один TpFIBDataSet для нескольких таблиц.
Для определенного количества или для любого?
> А хочется и лишние поля скрыть, и LookUp-поля организовать
А, таки наверное определенных, если знаешь какие поля скрывать.
> на на этапе конструирования список полей мне неизвестен
Так не известен, или может быть разным?

Не совсем понятны условия. В любом случае для абстрактного вопроса типа select * from anytable, для таблицы, состав которой ты не знаешь(тогда откуда знаешь ее имя?), тебе нужно этот состав узнать через системные таблицы (какие не скажу - не знаю). Ибо без знания наименований/типов полей тебе не обойтись. Если же эта инфа у тебя есть(запрос то ты сам составляешь) то используя FieldDefs собирай свой набор как хочешь - в хелпе очень приличный пример есть.

Если число датасетов всетаки известен, ИМХО, лучше их все таки прописать в дизайнере. Плюсов от этого, опять же ИМХО, больше чем минусов.



 
Alexander Vasjuk   (2002-10-02 12:10) [6]

User_OKA © (02.10.02 09:57)
Через MyIBDataSet.Fields[x] я получу доступ к значению поля с номером x. А мне нужно изменять/настраивать само поле.

Не так.
MyIBDataSet.Fields[x] и есть само поле


 
User_OKA ©   (2002-10-02 12:45) [7]

to Sergey13 © (02.10.02 10:57)
Список таблиц и полей этих таблиц мне известен, так как эту информацию я храню в своей базе данных в специальных таблицах. Преимущество в том, что при изменении состава полей или чего-то еще не придется копаться в исходном коде приложения. Достаточно будет подкорректировать эти специальные таблицы.
Спасибо за совет. Обязательно попробую.


 
First_May ©   (2002-10-02 12:55) [8]

Я делал поля динамически вот так и работает:

var TmpField: TStringField;

TmpField:=TStringField.Create(nil);
TmpField.FieldName:="comm";
TmpField.Name:=QList.Name+TmpField.FieldName;
TmpField.DataSet:=QList;
QList.FieldDefs.UpDate;



 
User_OKA ©   (2002-10-03 08:33) [9]

First_May © (02.10.02 12:55)
как раз то, что нужно!
Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2002.10.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
3-78272
lutikh
2002-10-02 22:23
2002.10.24
Много таблиц (.dbf). Выбрать одну позицию.


3-78208
Sergey-ZZZ
2002-10-04 11:24
2002.10.24
ADOQuery


3-78220
Cossys
2002-10-04 16:20
2002.10.24
Как в SQL-запросе считать параметр объекта


14-78599
Сатир
2002-09-23 12:41
2002.10.24
---|Ветка была без названия|---


7-78681
А н д р е й
2002-07-26 14:36
2002.10.24
Цвет выделенной ячейки StringGrig