Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1409036810
Артурчик
2014-08-26 11:06
2016.03.13
передача по FTP


2-1408972087
DQ
2014-08-25 17:08
2016.03.13
Перехват и подмена файлов при скачивании


8-1205002273
farrex
2008-03-08 21:51
2016.03.13
Эллипс под углом.


15-1435689210
SKIPtr
2015-06-30 21:33
2016.03.13
поздравляю всех с 31 июня


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





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