Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1189409712
alsov
2007-09-10 11:35
2007.10.07
Большой набор данных в гриде


2-1189184453
Dr. Andrew
2007-09-07 21:00
2007.10.07
как извлечь корень n-ной степени в Делфи!


15-1189175757
Dr. Andrew
2007-09-07 18:35
2007.10.07
Как вставить формулу в текстовом виде в функцию?


9-1160475693
grouzd)ev
2006-10-10 14:21
2007.10.07
Конкурсы по кодингу игр


2-1189575199
zero
2007-09-12 09:33
2007.10.07
Помогите решить задачку на турбо паскале





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