K
Das kommt sicher auf den Anwendungsfall an.
Im nachfolgenden Beispiel wird das Form2 dynamisch erzeugt und zusammen mit dem Form1 angezeigt.
Die Positionen lassen sich festlegen.
Anm.: Natürlich kodiert man Passworte und andere Werte nicht hart, eher holt man zB. Werte aus der Registry oder einer DB.
//Projekt-cpp
#include <vcl.h>
#pragma hdrstop
#include <Dialogs.hpp>
#include <tchar.h>
#include "formular1.h"
#include "formular2.h"
//---------------------------------------------------------------------------
USEFORM("formular1.cpp", Form1);
USEFORM("formular2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Form1->Show();
Form1->Position = poDesigned;
Form1->SetBounds(300, 300, Form1->Width, Form1->Height);
Form2 = new TForm2(Application);
Form2->Position = poDesigned;
Form2->SetBounds(300, 300, Form2->Width, Form2->Height);
Form2->ShowModal();
Form2->BringToFront();
String strName = Form2->Edit1->Text;
String strPW = Form2->Edit2->Text;
delete Form2;
if (strName == "user" && strPW == "123456")
Application->Run();
else
ShowMessage("Name oder Passwort falsch...");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
Es ist zu sehen, dass man Form1 zunächst garnicht erzeugen müsste und es auch in den if-Loop legen kann, nachdem
richtige Werte in Form2 eingetragen sind. Man kann also die Formularerzeugung auf diese Weise sehr gut steuern.