Главная страница
    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.012 c
3-1136760672
parovoZZ
2006-01-09 01:51
2006.03.05
Зачем связывают таблицы?


15-1139504698
Nic
2006-02-09 20:04
2006.03.05
Монитор запах смесью палёной пластмассы и изоленты на всю комнату


3-1136739485
Rust007
2006-01-08 19:58
2006.03.05
Как задать пароль к Acess и использовать её в Delphi


2-1140356030
_shark_@list.ru
2006-02-19 16:33
2006.03.05
Уважаемые мастера, подскажите пожалуйсто, как можно прочитать из


15-1139408697
SPeller
2006-02-08 17:24
2006.03.05
Ты из приморья, если...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский