Capturar Name e Caption do Menu Pressionado
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
Curtidas 0
Respostas
Bacalhau
03/06/2004
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
GOSTEI 0