Главная страница
    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
15-1435095040
Юрий
2015-06-24 00:30
2016.03.13
С днем рождения ! 24 июня 2015 среда


4-1275990081
QAZ
2010-06-08 13:41
2016.03.13
Вход пользователя


15-1435667122
Дмитрий С
2015-06-30 15:25
2016.03.13
hex 2 bin


8-1235654488
YuProhorov
2009-02-26 16:21
2016.03.13
Как красиво ( без зазубрин ) нарисовать наклонную линию ?


15-1435951465
Денис Комаров
2015-07-03 22:24
2016.03.13
Возможности MS Access





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