Rotina Genérica para Controlar os Acessos

Delphi

29/04/2005

Prezados colegas,

Voces devem ter conhecimento de uma rotina usada para capturar erros do sistema que consiste em setar a variavel Application.OnException := Minha_Rotina_Trata_Erros, onde nessa rotina, por exemplo eu posso estar fazendo um insert numa tabela do banco de dados destinada a armazenar os erros ocorridos no sistema. Gostaria de fazer algo parecido, mas para controlar os formularios que o usuario entrou. Isso seria relativamente simples de resolver se colocarmos a chamada a uma funcao em cada formulario, onde nessa funcao eu estaria fazendo um insert numa tabela do banco de dados destinada a armazenar os formularios acessados pelo usuario. Porem, eu gostaria de fazer algo generico, sem ter que ficar colocando a chamada a essa funcao em cada formulario. Naquele esquema do onException (quando ocorre o erro, dispara automaticamente a funcao). Essa questao é realmente brava, né? Se vc souber de algo que resolva esta questao, favor me dá um toque.

Grato pela atencao,

[]´s,
André


Andremelim

Andremelim

Curtidas 0

Respostas

Andremuller

Andremuller

29/04/2005

Eu nunca herdo um formulário de TForm exatamente para resolver problemas desse tipo.

Acho que você só vai conseguir resolver esse problema se também utiliza essa política porque a questão pode então ser facilmente resolvida.
Vá no ancestral e crie um insert pegando o código do usuário logado no sistema mais o Self.Name do formulário que vai retornar o nome do objeto atual, indiferente do método ser disparado no ancestral.

Se não tiver, dá pra fazer uma outra coisa;
Ao invés de disparar direto Form1.ShowModal crie um método tipo

function TForm1.ShowFormModal(AFrm: TForm): integer;
var
  ClassName: string;
begin
  InsereFormParaUsuarioConectado(AFrm.Name);
  Result := AFrm.ShowModal;
end;


que você dispara assim

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowFormModal(TForm2.Create(Application));
end;


Era isso? É que a questão não estava 100¬ clara pra mim


GOSTEI 0
Andremuller

Andremuller

29/04/2005

esquece aquele

var
ClassName: string

do primeiro método, aquilo eu estava usando pra bolar outra solução


GOSTEI 0
Motta

Motta

29/04/2005

Mesmo com o sistema tendo os form´s herados de TForm:

1) Crie um form com a funcionalidade que se quer.
2) ´Na mão´ troque a herança dos formularios que são herdeiros de TForm para o novo Form pai.


GOSTEI 0
POSTAR