Runtime creation of my Form

Don't know how many experts use Billenium package - bad boys if not use :), very good library.
Anyway I think that you can help me in any case. Untill now I embedded a form in my container using next code:

     Form2 := TForm2(W1.CreateForm(TForm2));
     W1.ShowForm(Form2, True);

All ok, just that now I create my Form2 on runtime.

with TForm.Create(Self) do Name:='Form2';
Form2 := TForm2(W1.CreateForm(TForm2));
W1.ShowForm(Form2, True);

In this case I get message that Form2 is unknown ( and I know that is true but don't know how to use after runtime creation )

Any help ?
LVL 9
ginsonicAsked:
Who is Participating?
 
esoftbgCommented:
there is  ways:
and

procedure TForm1.Button1Click(Sender: TObject);
begin
//  Form2 := TForm2.Create(nil);
//  Form2 := TForm2.Create(Self);
//  Form2 := TForm2.Create(Application);
  Application.CreateForm(TForm2, Form2);
  try
    Form2.ShowModal;
  finally
    Form2.Release;
    Form2 := nil;
  end;
end;

emil
0
 
ginsonicAuthor Commented:
Attention, can't use:

VAR  
FORM1  :  TFORM;  
BEGIN  
  FORM1:=TFORM.CREATE(SELF);  

because sometimes I create 1-2 forms, someelse more than 20, so I can't add var Form2, Form3 ....Form n
0
 
mokuleCommented:
But for
Form2 := TForm2(W1.CreateForm(TForm2));
You must declare Form2.
You can use this variable for all created forms
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

 
kretzschmarCommented:
what is W1 ?
0
 
ginsonicAuthor Commented:
I try to use Application.CreateForm(TForm2, Form2) but the form must be added to project.

I have a script where I get some questions. Depend of the questions number I will create a new form for each 15 questions.
For 48 questions, for example, I will host 4 new forms.

I can't create these forms at design mode because I can't know what type of vcl will use and the number of vcl ( editboxes, comboboxes, own vcl for datetime ... ).

What do the program. The client need to evaluate each case using a quizz ( a questions set ). This set can be changed each month so I wish to make it a little 'visual'. The client make a script that will contain all informations about questions:

Question1.Text
Question1.VCL.Name
Question1.VCL.Type
........
Question1.Record.Name
.....

Using this script I wish to create forms, to populate these with VCL and assign events. A little harder for my experience, but I like the challenge.

For kretzschmar,

W1 is a FormContainer. I create Form2 and embedded into W1 form container.

0
 
ginsonicAuthor Commented:
BTW, W1 is created at runtime too, but I have an algorithm to find this component by name. Unfortunatelly can't find a new form by name.

var c: TComponent;
...
C := FindComponentEx('Form1.W1');
0
 
ginsonicAuthor Commented:
And then ... TFormContainer(C).Visible := True; or something else.
0
 
ginsonicAuthor Commented:
I will use a dynamic form array.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.