Главная страница
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.059 c
2-1139832537
VikSel
2006-02-13 15:08
2006.03.05
Запуск приложения на других машинах


15-1139839172
Nick Denry
2006-02-13 16:59
2006.03.05
HTML editor в Delphi


4-1134561660
ekwo
2005-12-14 15:01
2006.03.05
Currency (Валюта)


1-1138870523
sally
2006-02-02 11:55
2006.03.05
Перемещение каталогов


2-1140275642
ExTeC
2006-02-18 18:14
2006.03.05
Работа со звуком и сетью. Куда копать?