Форум: "Базы";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизСоздание в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.175 c