Botão pressionado
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 ...
??????
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
Curtidas 0
Respostas
Rjun
08/06/2006
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?
GOSTEI 0
Btovix
08/06/2006
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!!
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!!
GOSTEI 0
Rodc
08/06/2006
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...
if (Sender is Button1)
Faz_isso...
else
if (Sender is Button2)
Faz_aquilo...
GOSTEI 0
Marco Salles
08/06/2006
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]
[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´);
GOSTEI 0
Mysys
08/06/2006
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 ...
é 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 ...
GOSTEI 0
Martins
08/06/2006
[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]
[/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.
[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´);
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.
GOSTEI 0
Martins
08/06/2006
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!
GOSTEI 0
Mysys
08/06/2006
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....
agora sim ...
um abraço .. é isso mesmo
if (Sender = BTNVisualizar) Then
ppReport.DeviceType := ´Screen´
Else if (Sender = BTNImprimir) Then
ppReport.DeviceType := ´Printer´;
Abraço....
GOSTEI 0
Rodc
08/06/2006
Tenta assim:
ou
ou
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´;
GOSTEI 0
Martins
08/06/2006
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
GOSTEI 0