Форум: "Начинающим";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];
ВнизДинамическое создание формы Найти похожие ветки
← →
Виталий_____ (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.758 c