Pergunte aqui
0

(Macro) Botão de opção - dúvidas

perguntadas 2020-05-09 23:01:21 +0200

imagem do gravatar de SpartanBR

updated 2020-06-03 23:41:19 +0200

imagem do gravatar de Schiavinatto

Tenho uma caixa de diálogo que inicia sempre com a data atual. Adicionei 6 botões de opção para diminuir o dia (Ex. se hoje é dia 09/05/20 vai diminuindo para 08/05/20, 07/05/20, e assim por diante). Toda vez que fecho a caixa de diálogo e abro novamente, por padrão os botões de opção voltam ao estado inicial (todos desmarcados). Minha dúvida é a seguinte, existe uma forma de manter salvo o estado botão de opção selecionado? (Para quando eu abrir a caixa de diálogo novamente, ela trazer o último botão selecionado antes do fechamento)

segue planilha exemplo:

C:\fakepath\List Box - numeric field - dialog.ods

O retângulo laranja (Botão de opção) abre a caixa de diálogo em questão. As macros estão no módulo "OptionButton"

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

Ola @SpartanBR, teoricamente para que isso ocorra, a escolha feita deve ser armazenada em uma célula e toda abertura deste dialogo ele recuperar a informação desta célula.

Logicamente funcionara se o arquivo foi salvo ao sair.

Como fazer é para os universitários, infelizmente sai do meu nível.

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-05-10 01:06:03 +0200 )editar

1 Resposta

0

respondidas 2020-05-13 13:18:14 +0200

imagem do gravatar de Conrado

updated 2020-05-13 13:25:49 +0200

@SpartanBR

Para os casos de OptionButton, ele traz 02 estados 0 = não ativo e 1 = ativo

https://wiki.openoffice.org/wiki/Docu...

Para que seu OptionButton retorne ativo como a última vez fechado, o Calc precisa de um "start" de informação, ou seja, como o @Schiavinatto disse, alguma célula deve conter alguma informação, para a programação avaliar e ativar o OptionButton necessário.

Para que o OptionButton fique ativo, o comando é este:

oDialog1.GetControl("Nome_do_OptionButton").Model.State = 1

É importante que cada OptionButton tenha seu nome particular.

Para jogar a informação do OptionButton na planilha, o comando é este:

    REM  *****  BASIC  *****

Global oDialog1 as Object
Sub Dialog1Show

    DialogLibraries.LoadLibrary( "Standard" )
    oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )

    oDoc = ThisComponent
    oDialog1.SetPosSize(500, 100, 600, 200, 17)

    oDialog1.Execute()  
    oDialog1.Dispose()

End Sub
rem>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Sub Lancar

    Dim oDoc, oSheet as Object
    Dim Opt001, Opt002 as Long
    Dim nOpt001, nOpt002 as String

    oDoc = ThisComponent
    oSheet = oDoc.Sheets.getByName("Planilha1")

Opt001 = oDialog1.GetControl("opt001").Model.State
Opt002 = oDialog1.GetControl("opt002").Model.State

If oDialog1.GetControl("opt001").Model.State = 1 Then
    nOpt001 = oDialog1.GetControl("opt001").Model.Label
Else
    nOpt001 = "nulo"
End If

If oDialog1.GetControl("opt002").Model.State = 1 Then
    nOpt002 = oDialog1.GetControl("opt002").Model.Label
Else
    nOpt002 = "nulo"
End If

oSheet.getCellRangebyName("A1").value = Opt001
oSheet.getCellRangebyName("A2").value = Opt002

oSheet.getCellRangebyName("B1").string = nOpt001
oSheet.getCellRangebyName("B2").string = nOpt002

End Sub

Você pode fazer um jogo de comandos "If Else End IF" para verificar se o State do OptionButton é 1 ou 0 e retornar a Label dele para uma variável se preferir. Após isso, a informação deve ser lançada em alguma célula na planilha. Lembrando que para cada Option, deve ter uma célula para cada.

editar assinalar como ofensivo Excluir Link mais

Comentários

1

@Conrado

Muito obrigado. Com base no seu código, consegui adaptar para a minha necessidade. Fiz um "IF" para verificar a célula e retornar (caso o valor fosse 1) o botão de opção marcado na inicialização da caixa de diálogo. Com mais botões fica trabalhoso, mas com paciência pode ser feito. Valeu pela ajuda.

imagem do gravatar de SpartanBRSpartanBR ( 2020-05-16 14:16:29 +0200 )editar

@SpartanBR, disponha...qualquer coisa, só chamar por aqui.

imagem do gravatar de ConradoConrado ( 2020-05-18 13:26:48 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2020-05-09 23:01:21 +0200

Lidas: 83 vezes

Última atualização: May 13 '20