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