Главная страница
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.019 c
14-78609
DiamondShark
2002-10-03 10:50
2002.10.24
Охренели


4-78730
oleg_er
2002-09-12 07:33
2002.10.24
управление DOS приложением


1-78423
brestmarket
2002-10-15 16:20
2002.10.24
В WebBrowser использую относительные переходы по диску,


7-78692
abcjoeexyz
2002-08-16 16:02
2002.10.24
DeviceIOControl


1-78327
Mav
2002-10-14 13:05
2002.10.24
Help OLE.