Olá Pessoal, tenho um Botão que gostaria que quando o usuário efetuasse o click nesse botão ele mudasse de cor.. como posso fazer isso?, a possibilidade de fazer usando a Classe TButton?
Olá Pessoal, tenho um Botão que gostaria que quando o usuário efetuasse o click nesse botão ele mudasse de cor.. como posso fazer isso?, a possibilidade de fazer usando a Classe TButton?
Acho interessante compartilhar, a nova necessidade para esse Botão que altera de Cor. Basicamente esse Botão abre uma telinha de Filtros onde mostra opções com TRadMenu, quando o usuário confirmar essa telinha selecionando um dos filtros, o Botão deve mudar de cor indicando que o filtro está ativo .
//Cria o Botão
User Function BtnGrid(oPanel)
Private oBtnFil := Nil
oBtnFil := TButton():Create(oPanel, 012, 002,"Filtros Inteligentes",{||U_FiltInt()}, 65,21,,oFontBtn,,.T.,,"Filtrar por situações",,,,,)
Return Nil
//Função que Cria a Telinha de Filtros
User Function FiltInt()
Local aItems := {}
Local cCSS := "QPushButton { background-color: #f4f4f4}"
Local cRadCss := "QRadioButton {font: normal 14px Arial;color: #000000;}"
Local oModal := Nil
Local oPal := Nil
Local bConf := {|| oRadio:bValid := ConfRad(aItems,nRadio)}
Local bLimp := {|| oRadio:aItems := aClone(oRadio:aItems), nRadio := 0,oBtnFil:SetCSS(cCSS) }
Local bSair := {|| oModal:DeActivate(),NIL,oBtnFil:SetCSS(cCSS) }
Local nRadio
oModal := FWDialogModal():New()
oModal:setEscClose(.T.)
oModal:setTitle("Filtros Inteligentes ")
//Seta a largura e altura da janela em pixel
oModal:setSize(180, 190)
oModal:createDialog()//responsável por criar a janela e montar os paineis.
// Capturar o objeto do FwDialogModal para alocar outros objetos se necessário.
oPal := oModal:getPanelMain()
nRadio := 0
aItems := {'Filtro 1','Filtro 2,;
'Filtro 3,'Filtro 4'}
oRadio := TRadMenu():New(02,02,aItems,,oPal,,,,,,,,200,53,,,,.T.,,)
oRadio:bSetGet := {|u|Iif (PCount()==0,nRadio,nRadio:=u)}
oRadio:SetCss(cRadCss)
oModal:AddButton( 'Confirmar' , bConf , 'Confirmar' , , .T., .F., .T., )
oModal:AddButton( 'Limpar Filtro' , bLimp , 'Limpar filtros' , , .T., .F., .T., )
oModal:AddButton( 'Cancelar' , bSair , 'Cancelar' , , .T., .F., .T., )
oModal:Activate()
Return
Executa a Ação de Filtrar os campos na Grid Principal, ao Confirma a opção de Filtro.
Static Function ConfRad(aItems,nRadio)
Local cCSS := "QPushButton { background-color: #90EE90}"
If nradio == 1
MsgAlert("Primeiro Filtro")
ElseIf nRadio == 2
MsgAlert("Segundo Filtro")
Endif
oBtnFil:SetCSS(cCSS)
Return()
Bom dia Eduarda !
Você pode usar CSS para fazer isso.
Por exemplo:
cCssBtn := "QPushButton { font-family: Arial, Helvetica, sans-serif;"+;
" font-size: 16px;" +;
" font-weight: bold;" +;
" background-color: #DCDCDC;" +;
" border: 1px solid; " +;
" border-radius: 5px; }" +;
"QPushButton:hover { color: #0000FF;" +;
" border: 2px solid #0000FF;" +;
" background-color: #A9A9A9; }" +;
"QPushButton:pressed { color: #DCDCDC;" +;
" border: 1px solid;" +;
" background-color: #000000; }"
oBtn1:SetCSS( cCssBtn )
Espero ter ajudado !
Obrigada Rodrigo Funcionou aqui!
— Eduarda Menezes 30 de Nov de 2022Legal ! Fico feliz !
— Rodrigo M. Spindola 01 de Dec de 2022