Fórum Fazer validação ao abrir form e fechá-lo ao negar acesso #318009
31/03/2006
0
Exemplo:
- Usuário não tem acesso ao cadastro de produtos
- Onde faço a validação e como cancelo a execução do form, já tentei no Create, Active e no Show e o ´Close´ não funciona, consigo fazer a validação sem problemas.
Até
Mario
Aldus
Curtir tópico
+ 0Posts
01/04/2006
Aldus
Gostei + 0
01/04/2006
Onjahyr
Você cria um campo no BD com acompanhamento de cada usuário. Quem pode o que, entende?
Na revista ClubeDelphi Edições 38 (Interbase) e 19 (paradox).
A Edição 19 tem um aplicativo de controle completo e bem elaborado de como controlar quem pode ter acesso ou não...
Já na edição 38, você tem que fazer via código ou diretamente no BD do Interbase, mas não tem um aplicativo de controle. Mas pode ser criado, claro!
Eu prefiro a edição 19 (opção minha)
Falowww
SITEVIRTUAL
Gostei + 0
03/04/2006
Aldus
Mario
Gostei + 0
03/04/2006
Paullsoftware
ao validar o login do usuário vc deve fazer uma verificação tb em uma tabela que guarde todas as permissoes para esse usuários por exemplo:
...
na hora de usar...
if QyMClientes.AsString = ´S´ then MClientes.Enabled := True else MClientes.Enabled := False; if QyMUsuarios.AsString = ´S´ then MUsuarios.Enabled := True else MUsuarios.Enabled := False; if QyMFuncionarios.AsString = ´S´ then MFuncionarios.Enabled := True else MFuncionarios.Enabled := False; if QyMProdutos.AsString = ´S´ then MProdutos.Enabled := True else MProdutos.Enabled := False; if QyMEstoque.AsString = ´S´ then MEstoque.Enabled := True else MEstoque.Enabled := False; if QyMPedidos.AsString = ´S´ then MPedidos.Enabled := True else MPedidos.Enabled := False;
Gostei + 0
03/04/2006
Aldus
Mario
Gostei + 0
03/04/2006
Andremuller
public function ShowModal: integer; override;
então só execute a herança se o usuário tiver permissão
function TForm1.ShowModal: integer; begin if PossuiPermissao then Result := inherited ShowModal; end;
Gostei + 0
03/04/2006
Andremuller
public procedure Show; reintroduce;
procedure TForm1.Show; begin if PossuiPermissao then inherited Show; end;
nos dois casos o form só será exibido caso o usuário tenha permissão.
isso resolve?
Gostei + 0
03/04/2006
Aldus
Mario
Gostei + 0
03/04/2006
Andremuller
Gostei + 0
03/04/2006
Aldus
Gostei + 0
04/04/2006
Aldus
Gostei + 0
04/04/2006
Andremuller
A técnica que passei é bem organizada visto tu realmente estar especializando um comportamento da classe TForm na tua nova classe, quer dizer que se tu usar a dica que passei, além de funcionar, ainda vai estar utilizando conceitos de OO. Não vejo porque procurar mais.
Na realidade essa consistência deveria ser feita antes da criação da instância da classe, não há necessidade de alocar todos recursos necessários para trabalho na interface se o usuário não tem permissão. De qualquer forma se dessa forma foi implementado a solução que passei resolve teu problema de uma forma bem organizada
sds
Gostei + 0
04/04/2006
Paullsoftware
[b:06183976f7]wCadPro:Boolean;[/b:06183976f7]
e na hora da chamada ao form você faria algo semelhante a isso:
if Not wCadPro then begin MessageDlg(´Você não possui prvilérgios para acessar essa área do sistema. Acesso negado!´,MtInformation,[MbOk],0); Exit; end else begin //Comandos para abrir o seu form... end;
Gostei + 0
04/04/2006
Renato.pavan
Coloque o codigo abaixo no evento OnPaint do Form
bPermissao := False; if not bPermissao then Close;
Gostei + 0
04/04/2006
Andremuller
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)