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

Вниз

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

 
lilyalm ©   (2012-04-23 12:24) [0]

Здравсвуйте!
Мне необходимо написать интерфейс к игре. Все довольно просто, но при создании форм возникают проблемы.
В проекте есть всего 1 главная форма MainForm, которая является наследникм TForm. Остальные формы нужно создавать динамически и все компоненты на них тоже.
Обычная конструкция типа
NewForm.Create(Application);
работает только когда NewForm - наследник TMainForm. Мне же необходимо, чтобы новые формы были также наследниками только TForm.
Надеюсь, понятно изложила. Заранее спасибо!


 
Медвежонок Пятачок ©   (2012-04-23 12:26) [1]

работает только когда NewForm - наследник TMainForm.

Всегда она работает.


 
Anatoly Podgoretsky ©   (2012-04-23 12:26) [2]

> lilyalm  (23.04.2012 12:24:00)  [0]

TForm.Create естественно


 
icWasya ©   (2012-04-23 15:05) [3]

для создания форм без dfm нужно использовать TForm.CreateNew


 
Сергей М. ©   (2012-04-24 12:39) [4]


> работает только когда NewForm - наследник TMainForm


Ересь ..


 
AV ©   (2012-04-24 12:52) [5]

Пример, кроме юнит1 никто про вторую форму не знает

Unit1
----
uses
...
 Unit2;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private     { Private declarations }
 public      { Public declarations }
   F: TForm2;
 end;

var
 Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 F := TForm2.Create(Application);
 F.Show;
end;
================
Unit2
----
type
 TForm2 = class(TForm)
 private    { Private declarations }
 public     { Public declarations }
 end;

implementation
===============
dpr
-----
 Forms,
 Unit1 in "Unit1.pas" {Form1};

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;


 
Германн ©   (2012-04-25 01:04) [6]


> Обычная конструкция типа
> NewForm.Create(Application);
> работает только когда NewForm - наследник TMainForm.

Это не ересь. Это незнание основ.
В [2] был дан "тонкий" намёк как нужно было вызывать конструктор.
Читайте http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342


 
shurets ©   (2012-05-17 12:27) [7]

procedure ShowModalDynamicForm(InstanceClass: TComponentClass; var Reference);
var
 Instance: TComponent;
begin
 Instance := TComponent(InstanceClass.NewInstance);
 try
   if (Instance is TForm) then
   try
     if (TForm(Reference) = nil) then
       Application.CreateForm(InstanceClass,Reference);

     TForm(Reference).ShowModal;
   except
     TForm(Reference):=nil;
     raise;
   end;
 finally
   FreeAndNil(Instance);
 end;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.008 c
15-1435534940
Дмитрий С
2015-06-29 02:42
2016.03.13
Выпадающий календарь. Вопрос по дизайну.


3-1307534034
vstory
2011-06-08 15:53
2016.03.13
получить record с помощью TOracleQuery


3-1306828683
alexshad
2011-05-31 11:58
2016.03.13
Delphi vs MS SQL


15-1435756478
xayam
2015-07-01 16:14
2016.03.13
Голография


1-1335169455
lilyalm
2012-04-23 12:24
2016.03.13
Динамическое создание формы