Fechar um form no evento OnShow
Olá pessoal
Estou fazendo uma rotina para validar o perfil de acesso dos usuarios no sistema. Gravo as permisoes em uma string q fica armazenada no banco de dados.
Uso uma herança de formularios... No form pai eu coloco todos os eventos comuns para todos os formularios q eu criar...
Eu queria saber se existe uma forma de forçar o fechamento de um formulario no Evento OnShow.
Por exemplo: Um usuario clica para abir uma tela. No form Pai eu tenho uma rotina para verificar se o usuario logado tem acesso aquela tela. Eu queria q no Show do formulario, dependento da resposta da verificacao, o form fechasse depois de uma msg de Acesso Negado.
Se alguem tiver alguma dica eu agradeço.
Valeu
rocedure TFrModeloCadastro.FormShow(Sender: TObject);
begin
Paginas.ActivePage := Acesso;
TbPrincipal.Open;
TbPrincipalOrderingChanged(TbPrincipal);
edPesquisa.SetFocus;
Screen.Cursor := crDefault;
if VerificaPermissao(FrPrincipal.PerfilAcesso,cod_tabela) = ´NAO PERMITIDO´ then
begin
MessageDlg(´Acesso não permitido´, mtWarning, [mbOK], 0);
Close;
end;
end;
Estou fazendo uma rotina para validar o perfil de acesso dos usuarios no sistema. Gravo as permisoes em uma string q fica armazenada no banco de dados.
Uso uma herança de formularios... No form pai eu coloco todos os eventos comuns para todos os formularios q eu criar...
Eu queria saber se existe uma forma de forçar o fechamento de um formulario no Evento OnShow.
Por exemplo: Um usuario clica para abir uma tela. No form Pai eu tenho uma rotina para verificar se o usuario logado tem acesso aquela tela. Eu queria q no Show do formulario, dependento da resposta da verificacao, o form fechasse depois de uma msg de Acesso Negado.
Se alguem tiver alguma dica eu agradeço.
Valeu
rocedure TFrModeloCadastro.FormShow(Sender: TObject);
begin
Paginas.ActivePage := Acesso;
TbPrincipal.Open;
TbPrincipalOrderingChanged(TbPrincipal);
edPesquisa.SetFocus;
Screen.Cursor := crDefault;
if VerificaPermissao(FrPrincipal.PerfilAcesso,cod_tabela) = ´NAO PERMITIDO´ then
begin
MessageDlg(´Acesso não permitido´, mtWarning, [mbOK], 0);
Close;
end;
end;
Colerapunk
Curtidas 0
Melhor post
Rodc
22/05/2006
Passa como parâmetro o Handle do form que você deseja fechar. Digamos estando no form FrModeloCadastro você está criando o form FrCadastroEmpresa, então ficaria assim:
PostMessage(FrCadastroEmpresa.Handle, WM_CLOSE, 0, 0);
GOSTEI 2
Mais Respostas
Siam
19/05/2006
Ative um Timer e no evento onTimer dê o Close
GOSTEI 0
Colerapunk
19/05/2006
Blz cara... foi isso mesmo q eu fiz... funcionou certinho...
mas pensei q tivesse outra forma de resolver.... so pra nao ficar usando um compenete pra fechar a tela...
Valeu
mas pensei q tivesse outra forma de resolver.... so pra nao ficar usando um compenete pra fechar a tela...
Valeu
GOSTEI 0
Rodc
19/05/2006
mas pensei q tivesse outra forma de resolver.... so pra nao ficar usando um compenete pra fechar a tela...
Valeu
E tem sim, por sinal, quanto menos Timer seu sistema usar melhor!
Teste com o código abaixo:
PostMessage(Form1.Handle, WM_CLOSE, 0, 0);
GOSTEI 0
Colerapunk
19/05/2006
Cara realmente o comando
PostMessage(Form.Handle, WM_CLOSE, 0, 0) funciona blz se for executado no proprio form
No meu caso estou usando um formulario padrao... todos os outros formularios sao decendentes de form padrao... A rotina de fechar a tela esta no formulario padrao e este comando de fechar a janela tem que ser excutado neste form padrão
Tipo assim:
PostMessage(FrModeloCadastro.Handle, WM_CLOSE, 0, 0);
onde FrModeloCadastro é o formulario pai, todos os outros form de cadastro descendem dele.
Esta dando um erro qdo o comando é executado. Talvez pq este form padrao nao é criado apenas o form q descende dele... teria uma forma de resolver isso?
Valeu
PostMessage(Form.Handle, WM_CLOSE, 0, 0) funciona blz se for executado no proprio form
No meu caso estou usando um formulario padrao... todos os outros formularios sao decendentes de form padrao... A rotina de fechar a tela esta no formulario padrao e este comando de fechar a janela tem que ser excutado neste form padrão
Tipo assim:
PostMessage(FrModeloCadastro.Handle, WM_CLOSE, 0, 0);
onde FrModeloCadastro é o formulario pai, todos os outros form de cadastro descendem dele.
Esta dando um erro qdo o comando é executado. Talvez pq este form padrao nao é criado apenas o form q descende dele... teria uma forma de resolver isso?
Valeu
GOSTEI 0
Massuda
19/05/2006
Como vai ser executado no próprio form que vai ser fechado, você não precisa dar o nome (da variável) do form...
PostMessage(Handle, WM_CLOSE, 0, 0);
GOSTEI 0