Array
(
)

Tela de login sobre formulario MDI

Arc
   - 22 set 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


Roy
   - 22 set 2004

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.


Arc
   - 22 set 2004

SDI ?????


Arc
   - 22 set 2004

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


Mago M3rl1n
   - 22 set 2004

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


Arc
   - 22 set 2004

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


Mago M3rl1n
   - 22 set 2004

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


Arc
   - 23 set 2004

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 ?


Dopi
   - 23 set 2004

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 ;


Eduprp
   - 23 set 2004

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


Mago M3rl1n
   - 23 set 2004

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);


Arc
   - 23 set 2004

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 ????