Fórum Variavéis Globais: Nível de Acesso. #431061

14/12/2012

0

Estou fazendo um Form_Login de acesso conectado a um BD Firebird, o mesmo é carregado depois do meu DataModulo, se o usuario existir ele criará o Form_Principal,vejam:

program BrewerySystem;

uses
  Forms,
  SysUtils,
  UnitDM in 'UnitDM.pas' {DM: TDataModule},
  UnitLogin in 'UnitLogin.pas' ,
  UnitPrincipal in 'UnitPrincipal.pas' ,

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TDM, DM);
  Form_Login:=TForm_Login.Create(nil);
  if (Form_Login.ShowModal = 1)  then begin
    Application.CreateForm(TForm_Principal, Form_Principal);
    Form_Principal.nivel_acesso:=Form_Login.nivel_usuario;//VARIAVEL nivel_acesso,nivel_usuario são PUBLIC
    FreeAndNil(Form_Login);
    Application.Run;
  end;


end.


o meu problema é que o Form_Principal não está recebendo o valor da variavel do Form_Login, esta variavel é o nivel de acesso do usuario que no Form_Principal sera avalidada num CASE para HABILITAR OU DESABILITAR algumas rotinas.
Josias Soares

Josias Soares

Responder

Posts

14/12/2012

Claudia Nogueira

Não gostei dessa forma que você fez.
Eu não uso assim. Eu tiro o form Form_Login do auto-create e deixo o DM e o Form_Principal.
No OnShow do Form_Principal eu faço o seguinte:

Application.CreateForm(TForm_Login, Form_Login);
if (Form_Login.ShowModal <> mrOk) then
begin
Application.Terminate;
Exit;
end;
nivel_acesso := Form_Login.nivel_usuario;
FreeAndNil(Form_Login);


Na tela Form_Login se o login estiver correto você coloca ModalResult := mrOk; senão ModalResult := mrCancel;
Responder

Gostei + 0

14/12/2012

Josias Soares

Valew claudinha,
Problema resolvido, acho que o erro foi eu deixar o Form_login no autocreate e não fazer a seleção no onshow do Principal.
até mais ver...
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar