Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1140170474
Клон
2006-02-17 13:01
2006.03.05
Отправка писем с вложениями через IdSMTP


2-1140027372
AlTor
2006-02-15 21:16
2006.03.05
Печать html-файлов


3-1137046323
DimonS
2006-01-12 09:12
2006.03.05
Удаление строк в Access


2-1139888407
tigra
2006-02-14 06:40
2006.03.05
Распаковать архив через FileExecute


15-1139542859
Бугага
2006-02-10 06:40
2006.03.05
Barry Manilow - Mandy





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский