Yo utilizo otra estrategia...
Código Delphi
[-]
program Tu_Programa;
uses
LoginUser;
{$R *.res}
Const
CM_RESTORE = WM_USER + $1000;
Var
AppHandle:hWnd;
begin
AppHandle := FindWindow('Titulo_Formulario__Principall');
If AppHandle > 0 Then
Begin
PostMessage(AppHandle, CM_RESTORE, 0, 0);
Exit;
End;
Application.Initialize;
Application.Title := 'Titulo_Formulario_Principal'
Application.CreateForm(TfrmMain, frmMain);
Application.CreateForm(Tm, m);
if LoginUser.Execute(frmMain.Usuario) then
Begin
frmMain.Init();
Application.Run;
End
else
begin
Application.Terminate;
end;
end.
Esta es la Unit
LoginUser.Pas...
Código Delphi
[-]
unit LoginUser;
interface
uses ...;
type
TfrmLogin = Class(TForm)
cmdLogin: TBitBtn;
cmdCancel: TBitBtn;
labLogin:TLabel;
txtLogin: TEdit;
labPass:TLabel;
txtPassword: TEdit;
procedure txtLoginExit(Sender: TObject);
procedure txtLoginEnter(Sender: TObject);
procedure cmdLoginClick(Sender: TObject);
procedure txtLoginChange(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
Procedure public
end;
function Executer(Var Usuario:String): Boolean;
Var
frmLogin:TfrmLogin;
implementation
Uses Main
{$R *.dfm}
function Execute(Usuario:String): Boolean;
begin
With TfrmLogin.Create(Application) Do
Begin
ShowModal;
Result:=ModalResult=mrOk;
if Result Then
Usuario:=txtLogin.Text;
Free;
End;
End;
Ojala te aclare algo...
Saludos