Fórum Botão pressionado #323111

08/06/2006

0

Assim

eu tenho uma funcao que ...

2 botoes...
1 procedure
eu queria assim..

no onclick dos botoes eu coloco

Minha_Procedure;

na procedure eu coloco ..

if botao1.precionado then
faz_isso
Else Botao2.precionado Then
Faz_aquilo.

agora eu nao sei como capturar qual botao foi precionado ...

??????


Mysys

Mysys

Responder

Posts

08/06/2006

Rjun

Passe um parâmetro para sua procedure dizendo qual botão foi pressionado. Mas, na boa, se você vai fazer coisas diferentes, dependendo do botão pressionado, por que você não cria dois métodos diferentes e os chama no evento onClick de cada botão?


Responder

Gostei + 0

08/06/2006

Btovix

Olá!! veja bem, vc pode usar o tag!! olha is itens no object inspector daí vc atribui um valor para o tag de cada botão (valores diferentes para cada um) e na hora ao invés de fazer um if coloca um case para cada valor!!

bem, mas eu acho que vc deveria mesmo era usar o evento on click de cada botão!! mas fica a vontade!!

Espero ter ajudado!! grande abraço!!


Responder

Gostei + 0

09/06/2006

Rodc

Ou você pode repassar o parâmetro Sender que já vem no evento OnClick() do botão. Daí é só verificar quem é o Sender.

if (Sender is Button1)
Faz_isso...
else
if (Sender is Button2)
Faz_aquilo...


Responder

Gostei + 0

09/06/2006

Marco Salles

A principio não precisa passar parametro nenhum.. Salvo os botoes do tipo TSpeedButton que não recebem o foco , os demais tem a propriedade Focused

[b:5fbc49a1e1]Dentro da sua procedure é so testar....[/b:5fbc49a1e1]

if form1.Button2.Focused Then
showmessage(´1´)
else
 if form1.Button2.Focused Then
   showmessage(´2´)
 else
  showmessage(´nenhum dos dois´);



Responder

Gostei + 0

09/06/2006

Mysys

assim ...

é um relatorio ....

unica diferenca é nos 2 botoes é que um visualiza e outro imprimi o relatorio é exatamente o mesmo ...

tentei assim :

if (Sender is BTNVisualiza) Then
ppReport.DeviceType := ´Screen´;
Else
ppReport.DeviceType := ´Printer´;

erro :

[Error] URelCop.pas(192): Operator not applicable to this operand type
[Error] URelCop.pas(199): Statement expected but ´PROCEDURE´ found



usar a propriedade Focused nao dá porque eu to usando o ToolBar e nao tem essa opcao..


Usar tag dá mais eu quero saber qual botao foi precionado ...


Responder

Gostei + 0

09/06/2006

Martins

[quote:ed4a7e1d52=´Marco Salles´]A principio não precisa passar parametro nenhum.. Salvo os botoes do tipo TSpeedButton que não recebem o foco , os demais tem a propriedade Focused

[b:ed4a7e1d52]Dentro da sua procedure é so testar....[/b:ed4a7e1d52]

if form1.Button2.Focused Then
showmessage(´1´)
else
 if form1.Button2.Focused Then
   showmessage(´2´)
 else
  showmessage(´nenhum dos dois´);
[/quote:ed4a7e1d52]

Realmente Marco Salles, esse método é bem mais prático, salvo o q já foi citado por vc sobre o componente TSpeedButton, além de ser menos trabalhoso.


Responder

Gostei + 0

09/06/2006

Martins

assim ... é um relatorio .... unica diferenca é nos 2 botoes é que um visualiza e outro imprimi o relatorio é exatamente o mesmo ... tentei assim : if (Sender is BTNVisualiza) Then ppReport.DeviceType := ´Screen´; Else ppReport.DeviceType := ´Printer´; erro : [Error] URelCop.pas(192): Operator not applicable to this operand type [Error] URelCop.pas(199): Statement expected but ´PROCEDURE´ found usar a propriedade Focused nao dá porque eu to usando o ToolBar e nao tem essa opcao.. Usar tag dá mais eu quero saber qual botao foi precionado ...


vc não postou o cabeçalho da sua procedure, mas tente algo como:


Procedure TFormx.suaprocedure(Sender: TObject;....);
begin
...
if (Sender = BTNVisualiza) Then 
   ppReport.DeviceType := ´Screen´; 
Else 
   ppReport.DeviceType := ´Printer´; 
...
end;


Boa sorte!


Responder

Gostei + 0

09/06/2006

Mysys

humm

agora sim ...

um abraço .. é isso mesmo


if (Sender = BTNVisualizar) Then
ppReport.DeviceType := ´Screen´
Else if (Sender = BTNImprimir) Then
ppReport.DeviceType := ´Printer´;


Abraço....


Responder

Gostei + 0

09/06/2006

Rodc

Tenta assim:
if (TToolButton(Sender) is BTNVisualiza) Then 
  ppReport.DeviceType := ´Screen´; 
Else 
  ppReport.DeviceType := ´Printer´;

ou
if (TToolButton(Sender) = BTNVisualiza) Then 
  ppReport.DeviceType := ´Screen´; 
Else 
  ppReport.DeviceType := ´Printer´;

ou
if (TToolButton(Sender).Name = ´BTNVisualiza´) Then 
  ppReport.DeviceType := ´Screen´; 
Else 
  ppReport.DeviceType := ´Printer´;



Responder

Gostei + 0

09/06/2006

Martins

humm agora sim ... um abraço .. é isso mesmo if (Sender = BTNVisualizar) Then ppReport.DeviceType := ´Screen´ Else if (Sender = BTNImprimir) Then ppReport.DeviceType := ´Printer´; Abraço....


Blz, é sempre muito bom conseguir ajudar um colega.

Bons códigos


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar