Может кому пригодится.
1. В приложении по умолчанию главной формой, т.е. формой, которая автоматически создается при старте, является форма логина. Т.е. именно она появляется первой.
2. В форме логина уже во время исполнения программы, подменяем форму логина на ту, которая должна теперь считаться главной.
procedure SetAsMainForm(aForm:TForm);
var
P: Pointer;
begin
P := @Application.Mainform;
Pointer(P^) := aForm;
end;
когда проверили логин/пароль и убедились, что пользователь авторизован, создаём форму и делаем её главной, а форму логина закрываем:
procedure TfmLogin.btnOkClick(Sender: TObject);
begin
if edPass.Text = qUserspassword.AsString then
begin
UserData.ID := qUsersid.AsInteger;
UserData.Name := qUsersname.AsString;
UserData.Group := qUsersid_group.AsInteger;
fmMain := TfmMain.Create(Application);
fmMain.Show;
SetAsMainForm(fmMain);
close;
end
else
begin
lbInfo.Text := 'Ошибка. Пароль неверный.';
end;
end;