Calc formulário botão de pressão desabilitado

usando macro basic, não achei como alterar a cor de botão de pressão em formulário (não dialógo) quando está desabilitado.

obrigado pela ajuda

Vá em:

  1. Aba Ferramentas
  2. Selecione Formulários
  3. Ative o Modo de edição se estiver desmarcada
  4. Estando o botão de pressão já criado, clique com o botão direito sobre
  5. Selecione Propriedades do controle
  6. Aba Geral
  7. Vá até a opção ‘Cor do plano de fundo’
  8. Selecione a cor que deseja e feche a Caixa de Diálogo

obrigado … mas não aparece a parte principal na sua resposta que era : “quando está (o botão) desabilitado” !

Não sei se existe essa possibilidade por meio convencional.
O que deseja exatamente?
Seria, p. ex., que o botão alterasse de cor automaticamente como se fosse uma condicional?

Ou seja, toda vez que fosse pressionado, trocasse de cor?

Seria isso?

Seria algo neste sentido, é um artigo para Excel, teria que converter para Basic…

https://pt.extendoffice.com/documents/excel/1717-excel-change-color-of-button.html

1 Like

não imagino porque, mas parece ser uma limitação tanto do Excel quanto do Calc !

“Se o botão for um botão de controle de formulário, você pode apenas alterar a cor da fonte dele, mas não alterar a cor de fundo.”

tendo um formulário com vários botões e outros campos, queria que botões mudassem de cor de fundo (conforme eu configuraria via macro basic) conforme eu habilitasse ou desabilitasse os botões conforme o estado dos dados da folha …

apenas como exemplo poderia configurar o fundo do botão para verde quando habilitado e vermelho no caso contrário.

@philippe.s.levi , talvez seja porque a propriedade Backgrouncolor esteja na propriedade “Model” do botão, portanto teria que usar o seguinte comando (sugestão):

oBotao = oDlg.getControl (btnLancar)
oBotao.Enable = False
oBotao.Model.BackgroundColor = 123654

interessante …
mas o que passa se aplica a “dialog” !
note que escrevi: "em formulário (não dialógo) " :slight_smile:

Tenho este exemplo de habilita e desabilita caixa de grupo. Então acredito que é possível mexer em configurações de Botão, só descobrir como.

160330-Ativar Desativar Caixa de grupo.ods (12.0 KB)

1 Like

obrigado !
algumas podem ser mudadas mas como não é possível com Excel, é bem provável que não seja possível com Calc mudar cor de fundo de botão desativado … paciência !

de todo jeito, a configuração não comporta nada em relação a isso (escolher opção quando habilitado e outra quando não está)!

uma forma de contornar seria usar 2 botões e deixar somente um visível … trocar de botão conforme necessidade … mas exige mão de obra (programação) ! quando seria tão bom poder fazê-lo via configuração !

Vi a sua planilha. Ajudou muito, obrigado. Mas não consegui entender essa linha “oForm = oPlan.DrawPage.Forms.getByname(“Formulário”)”. Que formulário é esse que eu não encontrei?

Os formularios podem ver verificados no navegador de formularios.

Olá @Eliel_Francklim
Postagem fonte:

Deduzi que é referente a Barra de Formulário e oForm.getByName são os itens da Barra.

1 Like

@philippelévi , não sei se é o que precisa, mas segue o que entendi:
Coloquei as cores para alterar em modo randômico, mas pode definir uma cor fixa.
Se você já tiver um esboço do que você precisa fica melhor para esclarecer as dúvidas e encontrar a melhor solução.
alterar-cor-botao.ods (10.2 KB)

Option Explicit

Public oDoc As Object
Public oPlan As Object
Public oForm As Object
Public oBtnSalvar As Object
Public oBtnCancelar As Object
Public oBoxhabilita As Object

Public Sub Botao()
oDoc = ThisComponent
oPlan = oDoc.sheets (0)

oForm = oPlan.DrawPage.Forms.getByName( “Formulário” )
oBtnSalvar = oForm.getByName(“btnSalvar”)
oBtnCancelar = oForm.getByName(“btnCancelar”)
oBoxHabilita = oForm.getByName (“boxHabilita”)

End Sub

Sub HabilitaBotoes
Call Botao
If oBoxHabilita.state = 0 Then
obtnSalvar.Enabled = False
obtnCancelar.Enabled = False
oBtnSalvar.BackgroundColor = 16000000
oBtnCancelar.BackgroundColor = 16000000

Else
obtnSalvar.Enabled = True
obtnCancelar.Enabled = True
oBtnSalvar.BackgroundColor = 100000
oBtnCancelar.BackgroundColor = 100000
End If
End Sub

Sub CorBtnSalvar
Call Botao
oBtnCancelar.BackgroundColor = (rnd(16000000)*16000000)
obtncancelar.Enabled = False
End Sub

Sub CorBtnCancelar
Call Botao
oBtnSalvar.BackgroundColor = (rnd(16000000)*16000000)
End Sub

1 Like

olá … obrigado pelo exemplo.

reconheço que o meu enunciado não é 100% claro !

queria configurar, via macro, um botão de formulário para que ele tenha uma cor de fundo quando habilitado e outra quando desabilitado. por default a cor para desabilitado é sempre a mesma (cinza qualquer).

se trata de alterar a cor de fundo na configuração do botão, não mudar a cor de fundo a cada vez que ele muda para desabilitado.

reconheço que é um problema meio “teorico” que parece não ter solução (essa cor de fundo é padrão para todos os botões quando desabilitado e não se configura), pois temos solução como você apontou, mudando essa cor junto com enabled = false !

aproveito para agradecer a todos pela atenção,
Philippe