Tela de login sobre formulario MDI

22/09/2004

Montei um projeto com o formulario MDI, agora quero colocar um form de login. Esse form deve aparecer sobre o formulario MDI, sendo que não podera ser acessado nada desse form MDI, sem antes entrar com o login, caso contrario, encerrar o apliativo


Arc

Respostas

22/09/2004

Roy

Crie o seu form de Login como SDI, assim quando este form for chamado ele bloqueará todos os forms MDI´s enquando o form de login estiver ativo.


Boa Sorte.


Responder Citar

22/09/2004

Arc

SDI ?????


Responder Citar

22/09/2004

Arc

Aí teria que ser um novo projeto ???? Tem como definir um form como SDI ?


Responder Citar

22/09/2004

Mago M3rl1n

Voce pode criar um form Normal e dar um showmodal nele. Ou entao criar o form como stayontop.


Responder Citar

22/09/2004

Arc

eu coloquei stayontop no form do login, ele até permanece na frente do form mdi, mas permite que eu acesse esse mdi


Responder Citar

22/09/2004

Mago M3rl1n

Entao faça o form de login como FormStyle = fsNormal e da um showmodal.


Responder Citar

23/09/2004

Arc

Mas eu quero que ele abra junto com o form MDI, não vou dar showmodal....

Tem algum evento onde eu possa colocar o showmodal para abrir automaticamente, junto com o mdi ?


Responder Citar

23/09/2004

Dopi

Experimente dar um Showmodal no OnActive....

Talvez seja necessário criar algum ´flag´ para sinalizar se já houve login ou não.... pois acho que o Onactive é disparado quando você alternar de programa (ALT-TAB, ALT-ESC)

Ex.: if not LoginEfetuado then
if FormSenha.Showmodal = mrOk then
LoginEfetuado := true ;


Responder Citar

23/09/2004

Eduprp

Ola

Você pode colocar um Timer ao invés da Flag.
A propriedade active sempre como True.
Quando inicia o programa o timer é ativado (coloque a propriedade interval como 1), no evento ontimer altere a propriedade enable do timer para false e showmodal no form de login.


Eduardo M. Pereira


Responder Citar

23/09/2004

Mago M3rl1n

1) Crie um procedimento WmUser

procedure frmPrincipal.WmUser(var Msg: TMessage);
begin
case Msg.Wparam of
EV_JANELA_VISIVEL :
begin
{coloque seu codigo para chamar janela de login}
end;
end;

2) Defina na private
procedure WmUser(var Msg: TMessage); message WM_USER;

3) No OnShow, coloque
PostMessage(Handle, WM_USER, EV_JANELA_VISIVEL, 0);


Responder Citar

23/09/2004

Arc

Caro Mago M3rl1n

depois de muita insistencia eu consegui usar o form de login mudando a propriedade FormStyle como fsStayOnTop.

Então la no AutoCreate Form do Delphi eu deixei o DataModule, o Form do Menu e o Form do Login

o Menu esta assim

FormStyle = fsMDIForm
Defaultmonitor = dmActiveForm
Enabled = False

Login

FormStyle = fsStayonTop
Defaultmonitor = dmActiveForm

O main menu está o form do Menu

Esta funcionando beleza, só persiste um problema, o foco não esta vindo no form de login

Alguma dica ????


Responder Citar