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

Вниз

Динамическое создание формы   Найти похожие ветки 

 
Виталий_____   (2007-09-12 08:21) [0]

Доброе время суток! Возникла необходимость запрашивать в ходе работы строковые и целочисленные значения. Нужно организовать динамически формируемый диалог. Проблема следующая: компоненты "накидываемые" на создаваемую форму не отображаются. Подскажите, чего я "забываю" делать.


function TFST.AscStr(TextQues:string):string;
var tmpf:TForm;
   k:integer;
   tmpe:TEdit;
   tmpl:TLabel;
   tmpb:TButton;
const SpaceSize:integer=10;
begin
tmpf:=TForm.Create(FStaroselcevTreug);
FStaroselcevTreug.InsertComponent(tmpf);
tmpf.Caption:="Запрос строкового параметра";

tmpl:=TLabel.Create(tmpf);
tmpf.InsertComponent(tmpl);
tmpl.Caption:=TextQues;
tmpl.AutoSize:=true;
tmpl.Left:=SpaceSize;
tmpl.Top:=SpaceSize;
tmpf.Width:=tmpl.Width+SpaceSize*2;

tmpe:=TEdit.Create(tmpf);
tmpf.InsertComponent(tmpe);
tmpe.Width:=tmpl.Width;
tmpe.Top:=tmpl.Top+tmpl.Height+SpaceSize;
tmpe.Left:=SpaceSize;

tmpb:=TButton.Create(tmpf);
tmpf.InsertComponent(tmpb);
tmpb.ModalResult:=MB_OK;
tmpb.Caption:="ok";
tmpb.Left:=tmpf.Width-(tmpb.Width mod 2);
tmpb.Top:=tmpe.Top+tmpe.Height+SpaceSize;

tmpf.BorderIcons:=[biSystemMenu];
tmpf.Height:=tmpb.top+tmpb.Height+SpaceSize;
tmpf.BorderStyle:=bsSingle;
tmpf.Position:=poOwnerFormCenter;

//k:=tmpf.ShowModal;
tmpf.Visible:=true;
tmpf.BringToFront;
ShowMessage(inttostr(k));

tmpl.Free;
tmpe.Free;
tmpb.Free;
tmpf.Free;
end;



 
Palladin ©   (2007-09-12 08:42) [1]

tmpf.InsertComponent(tmpl);
замени на tmpl.Parent:=tmpf;
и
StaroselcevTreug.InsertComponent(tmpf); на
tmpf.Parent:=StaroselcevTreug;

соответственно


 
Slym ©   (2007-09-12 10:50) [2]

одного tmpf.Free; хватит т.к. все остальное у тебя .Create(tmpf);


 
Виталий_____   (2007-09-12 16:36) [3]

Да, наверное так тоже можно. Во всяком случае сам разобрался. Заменил InsertComponent на InsertControl. Всем спасибо. Про free - спасибо, учтем.


 
temp1209   (2007-09-12 16:59) [4]

оффтоп:
а чем InputQuery не подошел?


 
Kolan ©   (2007-09-12 17:45) [5]

> tmpl:=TLabel.Create(tmpf);
> tmpf.InsertComponent(tmpl);
> tmpl.Caption:=TextQues;
> tmpl.AutoSize:=true;
> tmpl.Left:=SpaceSize;
> tmpl.Top:=SpaceSize;
> tmpf.Width:=tmpl.Width+SpaceSize*2;

Выдели эти блоки в отдельные функции вроде такой:
function CreateEdit(Caption: string; Left, Top, Wigth: Integer; Parent: TWinControl): TEdit;

Прочти про паттерны: Абстрактная фабрика и фабричный метод.



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

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

Наверх




Память: 0.48 MB
Время: 0.023 c
15-1189359302
Галинка
2007-09-09 21:35
2007.10.07
Белый шум: факт или "художественный прием"


15-1189417959
em240
2007-09-10 13:52
2007.10.07
VS2005+C# - не подключается using System.Messagin.


15-1189200756
Petr V. Abramov
2007-09-08 01:32
2007.10.07
славные 90-е РФ


15-1189492760
Ломброзо
2007-09-11 10:39
2007.10.07
Помогите с CSS


15-1189131844
Slider007
2007-09-07 06:24
2007.10.07
С днем рождения ! 7 сентября 2007 пятница