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

Вниз

Создание в run-time компонентов заранее неизвестных типов   Найти похожие ветки 

 
bopmy   (2006-01-04 23:44) [0]

Необходимо создать компоненты по данным о них взятым из БД  
В БД храняться псевдо-данные о типе компонента ("Integer",Name,Длинна,Имя поля в БД).
Как в run-time создать компонент заранее неопределенного типа и присвоить ему необходимые свойства.
Я пробовал так

var
 DbObgParam: array [1..10] of TControl;
begin
 while not FormParam.Eof do
 begin
   if pos("Varchar",FormParamD_type.AsString)<>0 then
   begin
// Npp-номер попорядку вывода на панель
        DbObgParam[FormParamNpp.Value]:=TDBEdit.Create(Self);
        DbObgParam[FormParamNpp.Value].Parent:=Self;
        TDBEdit(DbObgParam[FormParamNpp.Value]).DataSource:=DSSpr;
//на этой строчке валится с AV (FormParamTable_name - имя поля в таблице)
        TDBEdit(DbObgParam[FormParamNpp.Value]).Field.FieldName:=FormParamTable_name.Value;
        DbObgParam[FormParamNpp.Value].Left:=8;
        DbObgParam[FormParamNpp.Value].Top:=20;
        DbObgParam[FormParamNpp.Value].Left:=8;
        DbObgParam[FormParamNpp.Value].Width:=190;
   end;
   FormParam.Next;
 end;

Как это можно сделать еще или где ошибка.
Заранее благодарен.


 
Polevi ©   (2006-01-05 09:49) [1]

DbObgParam[FormParamNpp.Value]).Field


 
Stanislav ©   (2006-01-05 13:42) [2]

А почему так?
DbObgParam: array [1..10] of TControl;
 DbObgParam[FormParamNpp.Value]:=TDBEdit.Create(Self);


 
bopmy   (2006-01-05 20:05) [3]

А как еще можно я ведь об этом и спрашиваю
Пока решил так
DbObgParam: array [1..10] of TControl;

        DbObgParam[FormParamNpp.Value]:=TDBEdit.Create(PageControl1.Pages[5]);
        DbObgParam[FormParamNpp.Value].Parent:=PageControl1.Pages[5];
        TDBEdit(DbObgParam[FormParamNpp.Value]).DataSource:=DSSpr;
        DbObgParam[FormParamNpp.Value].Left:=8;
        DbObgParam[FormParamNpp.Value].Top:=i+20;
        DbObgParam[FormParamNpp.Value].Left:=8;
        DbObgParam[FormParamNpp.Value].Width:=190;
        TDBEdit(DbObgParam[FormParamNpp.Value]).DataField:=FormParamTable_name.Value;
        DbObgParam[FormParamNpp.Value].Show;


 
bopmy   (2006-01-05 20:09) [4]

Может кто подскажет сылку на решение подобной задачи
"Динамическое построение параметров справочника"
имеется в виду создание справочников с различными полями и наборами данных по заранее созданному шаблону который хранится в БД. Шаблон подразумевает не хранение всей формы а только псевдо данных о структурк и типах данных.


 
Fay ©   (2006-01-06 03:17) [5]

2 bopmy   (05.01.06 20:09) [4]
Думаю, это задачка на знание оператора IF.
Других сложностей нет. Ну, м.б., кроме чтения собственных текстов с инвариантами (DbObgParam[FormParamNpp.Value]).


 
tech ©   (2006-01-08 01:46) [6]

//на этой строчке валится с AV (FormParamTable_name - имя поля в таблице)
TDBEdit(DbObgParam[FormParamNpp.Value]).Field.FieldName:=FormParamTable_name.Value;

AV возникает, поскольку еще не определ Field. Чтобы он находился сам в присоединенном через DataSource DataSet (проверьте, есть ли связка DataSource DataSet !), необходимо писать

TDBEdit(DbObgParam[FormParamNpp.Value]).DataField:=FormParamTable_name.Value;

далее по тексту.
Хорошо бы еще перед

while not FormParam.Eof do

прописать

 FormParam.First;

поскольку неясно, где открывается таблица и что с ней еще делается до вызова приведенной процедуры.


 
Fay ©   (2006-01-08 04:56) [7]

2 tech ©   (08.01.06 1:46) [6]
> поскольку неясно, где открывается таблица
Если уж на то пошло, то не очевидно, что открыт именно двунаправленный курсор 8)



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

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

Наверх




Память: 0.48 MB
Время: 0.026 c
1-1138887491
Maverick
2006-02-02 16:38
2006.03.05
[Developer Express]как изменить цвет строчки в grid е?


2-1140011690
Руслан
2006-02-15 16:54
2006.03.05
Как узнать заголовок музыкального файла?


2-1139851736
Интересующийся
2006-02-13 20:28
2006.03.05
Поиск и запись текста в TStringList


4-1134327490
Destroyer
2005-12-11 21:58
2006.03.05
удаления "папки" в реестре


1-1138982654
Apollon_604
2006-02-03 19:04
2006.03.05
Прозрачность компонент