Главная страница
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.032 c
2-1189391632
арпывапр
2007-09-10 06:33
2007.10.07
отключение USB?


15-1188064254
ArtemESC
2007-08-25 21:50
2007.10.07
Музыка


1-1185351667
Unknown user
2007-07-25 12:21
2007.10.07
Нейронные сети


2-1189576036
KazaModeDelphi
2007-09-12 09:47
2007.10.07
Получение TBitmap из друг....


2-1189325518
qaaqw
2007-09-09 12:11
2007.10.07
Расположение класса в модуле.