Fórum Capturar Name e Caption do Menu Pressionado #235938
03/06/2004
0
Olá
Estou montando uma rotina para tratamento de erro e estou tendo o seguinte problema:
Preciso capturar o nome (ou caption) do item do menu pressionado.
Lembrando que preciso de uma rotina genérica que sirva para capturar qualquer item que eu tenha pressionado.
Grato,
André Moliva
Estou montando uma rotina para tratamento de erro e estou tendo o seguinte problema:
Preciso capturar o nome (ou caption) do item do menu pressionado.
Lembrando que preciso de uma rotina genérica que sirva para capturar qualquer item que eu tenha pressionado.
Grato,
André Moliva
Moliva
Curtir tópico
+ 0
Responder
Posts
07/06/2004
Bacalhau
Tem várias maneiras. uma delas é assim:
with sender as TMenuitem do
begin
if name = ´um_nome´ then <faço uma coisa>
if name = ´outro_nome´ then <faço outra coisa>
etc
end;
Mas o melhor é deixar a aplicação resolver o assunto. É assim: no form principal (normalmente em FormCreate) colocas
Application.OnException:=RegistaAccao;
onde RegistaAccao pode ser um procedure como este:
// grava erro no aquivo de log
log.close;
log.tablename := ´PDG.DB´;
log.open;
log.append;
log.edit;
log.fieldbyname(´Data´).asstring := Datetostr(Date);
log.fieldbyname(´Hora´).asstring := TimeToStr(Time);
log.fieldbyname(´Tipo´).asstring := ´Erro´;
log.fieldbyname(´Form´).asstring := screen.activeform.name;
log.fieldbyname(´Controle´).asstring := screen.activecontrol.name;
log.fieldbyname(´Acção´).asstring := e.message;
log.post;
log.close;
// exibe mensagem para o utilizador
msg := e.message+#10;
msg := msg+´Form: ´+screen.activeform.name+10;
msg := msg+´Controle: ´+screen.activecontrol.name;
MessageDlg(msg,mtError,[mbOK],0);
Neste caso, para além de enviar uma mensagem ao utilizador, regista a ocorrência numa tabela. Assim, fica fácil verificar ao pormenor, TUDO o que aconteceu naquela máquina. Podemos até capturar a tabela via-Internet e fazer uma análise.
abraço
bacalhau
with sender as TMenuitem do
begin
if name = ´um_nome´ then <faço uma coisa>
if name = ´outro_nome´ then <faço outra coisa>
etc
end;
Mas o melhor é deixar a aplicação resolver o assunto. É assim: no form principal (normalmente em FormCreate) colocas
Application.OnException:=RegistaAccao;
onde RegistaAccao pode ser um procedure como este:
// grava erro no aquivo de log
log.close;
log.tablename := ´PDG.DB´;
log.open;
log.append;
log.edit;
log.fieldbyname(´Data´).asstring := Datetostr(Date);
log.fieldbyname(´Hora´).asstring := TimeToStr(Time);
log.fieldbyname(´Tipo´).asstring := ´Erro´;
log.fieldbyname(´Form´).asstring := screen.activeform.name;
log.fieldbyname(´Controle´).asstring := screen.activecontrol.name;
log.fieldbyname(´Acção´).asstring := e.message;
log.post;
log.close;
// exibe mensagem para o utilizador
msg := e.message+#10;
msg := msg+´Form: ´+screen.activeform.name+10;
msg := msg+´Controle: ´+screen.activecontrol.name;
MessageDlg(msg,mtError,[mbOK],0);
Neste caso, para além de enviar uma mensagem ao utilizador, regista a ocorrência numa tabela. Assim, fica fácil verificar ao pormenor, TUDO o que aconteceu naquela máquina. Podemos até capturar a tabela via-Internet e fazer uma análise.
abraço
bacalhau
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)