Esta é a segunda parte da série de tutoriais de "Trabalhando com controles de formulários em LibreOffice / OpenOffice Calc '. Primeira parte pode ser encontrada aqui. Na primeira parte, uma caixa de texto simples e um botão é coberto. Este tutorial irá cobrir todos os outros controles básicos - Editora, Check Box, caixa de combinação caixa, caixa de lista - como acessar os valores desses controles e como reconhecer os valores selecionados de usuários sobre esses controles.
Abra LibreOffice e criar um diálogo. Adicione um rótulo, três caixas de seleção, duas caixas de opção, uma caixa de lista, uma caixa de combinação e um botão. Todos estes controlos podem ser adicionados por meio de caixas de ferramentas (ver abaixo). Você pode acessar o caixa de ferramentas a partir do menu:
View --> Toolbars --> ToolBox (Exibir --> Barra de Ferramentas --> TooBox)
![]() | ||
Toolbox do LibreOffice |
Uma vez que você adicionou, selecionar e arrastar-los de acordo com sua necessidade dentro do formulário. Neste tutorial, vamos acessar os valores / opções selecionadas nesses controles e colocá-los em células do Calc. Lendo os valores é o mais básico como estes são necessários para as tarefas mais complexas.
O formulário concebido para este tutorial
Caixa de seleção
As caixas de seleção são uma maneira do usuário fazer múltiplas escolhas. Para obter se a caixa de seleção está marcada ou não, pode-se utilizar o método getState. Se
for verificado que retorna 1, caso contrário 0. Ao projetar, você pode
mudar o texto exibido cada caixa de seleção ao lado usando campo
'Etiqueta' na guia Geral da janela de propriedades.
chkBox1 = oDialog1.GetControl("CheckBox1")
chkBox2 = oDialog1.GetControl("CheckBox2")
chkBox3 = oDialog1.GetControl("CheckBox3")
if chkBox1.State = 1 then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,1)
oCell.String = "Debian"
end if
if chkBox2.State = 1 then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,2)
oCell.String = "Ubuntu"
end if
if chkBox3.State = 1 then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,3)
oCell.String = "elementary"
end if
chkBox2 = oDialog1.GetControl("CheckBox2")
chkBox3 = oDialog1.GetControl("CheckBox3")
if chkBox1.State = 1 then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,1)
oCell.String = "Debian"
end if
if chkBox2.State = 1 then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,2)
oCell.String = "Ubuntu"
end if
if chkBox3.State = 1 then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,3)
oCell.String = "elementary"
end if
Caixa de listagem e caixa de combinação
Caixa de listagem e caixa de combinação dando aos usuários a capacidade de selecionar a partir de uma lista de itens. A única diferença entre estes dois são do jeito que exibir os itens. Caixa de combinação tem uma lista suspensa e caixa de listagem tem uma lista de itens exibidos.
Para obter a seleção de uma lista, a função getSelectedItem () pode ser usado.
Para obter o item selecionado na caixa de combinação, o SelectedText function () pode ser usado.
Para pré-preencher a lista e de combinação, vamos usar a função addItem (,) ao carregar o formulário pela primeira vez.
lstBox1 = oDialog1.GetControl("ListBox1")
if lstBox1.getItemCount = 0 then
lstBox1.addItem("Mango",1)
lstBox1.addItem("Apple",2)
lstBox1.addItem("Orange",3)
end if
cmbBox1 = oDialog1.GetControl("ComboBox1")
if cmbBox1.getItemCount = 0 then
cmbBox1.addItem("500",1)
cmbBox1.addItem("1000",2)
cmbBox1.addItem("10000",3)
end if
oCell = ThisComponent.Sheets(0).getCellByPosition(1,5)
oCell.String = lstBox1.getSelectedItem()
oCell = ThisComponent.Sheets(0).getCellByPosition(1,6)
oCell.String = cmbBox1.SelectedText()
if lstBox1.getItemCount = 0 then
lstBox1.addItem("Mango",1)
lstBox1.addItem("Apple",2)
lstBox1.addItem("Orange",3)
end if
cmbBox1 = oDialog1.GetControl("ComboBox1")
if cmbBox1.getItemCount = 0 then
cmbBox1.addItem("500",1)
cmbBox1.addItem("1000",2)
cmbBox1.addItem("10000",3)
end if
oCell = ThisComponent.Sheets(0).getCellByPosition(1,5)
oCell.String = lstBox1.getSelectedItem()
oCell = ThisComponent.Sheets(0).getCellByPosition(1,6)
oCell.String = cmbBox1.SelectedText()
Option Box (Caixa de Opção)
Caixa Opção são aqueles opções apresentadas ao utilizador e só um deles pode ser selecionado. Ao contrário de outras aplicações, em LO, todas as caixas de opção são agrupados por padrão que é adicionado na forma.
O property State () (estado proprietário) de uma caixa de opção retorna True (Verdadeiro) é a opção for selecionada, caso contrário, retorna False (Falso).
if optBtn1.State = True then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,7)
oCell.String = "No"
end if
if optBtn2.State = True then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,8)
oCell.String = "Yes"
end if
oCell = ThisComponent.Sheets(0).getCellByPosition(1,7)
oCell.String = "No"
end if
if optBtn2.State = True then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,8)
oCell.String = "Yes"
end if
Juntando tudo - Executando a macro
Uma vez que o design de formulário está completo, vamos mostrar os valores escolhidos pelo usuário na forma nas células do Calc.
Para executar o formulário, executar a função StartDialog1 (). Esta é a mesma função que temos usado em tutoriais anteriores e como pontapé de saída / atribuir esta função para evento de clique de um botão - leia aqui a primeira parte desta série de tutoriais.
Selecione algumas opções dos componentes na forma e clique no botão do LO Calc que já está aberto, você verá os valores escritos e colocar nas células do Calc.
Função Referências - usado neste artigo
Macro completo Para executar, copiar e colar todo este bloco de código a seguir no Editor de Macro no LibreOffice.
Dim oDialog1 As Object
Sub StartDialog1()
BasicLibraries.LoadLibrary("Tools")
oDialog1 = LoadDialog("Standard", "Dialog1")
lstBox1 = oDialog1.GetControl("ListBox1")
if lstBox1.getItemCount = 0 then
lstBox1.addItem("Mango",1)
lstBox1.addItem("Apple",2)
lstBox1.addItem("Orange",3)
end if
cmbBox1 = oDialog1.GetControl("ComboBox1")
if cmbBox1.getItemCount = 0 then
cmbBox1.addItem("500",1)
cmbBox1.addItem("1000",2)
cmbBox1.addItem("10000",3)
end if
oDialog1.Execute()
End Sub
Sub readDialog1()
Dim oCell
chkBox1 = oDialog1.GetControl("CheckBox1")
chkBox2 = oDialog1.GetControl("CheckBox2")
chkBox3 = oDialog1.GetControl("CheckBox3")
optBtn1 = oDialog1.GetControl("OptionButton1")
optBtn2 = oDialog1.GetControl("OptionButton2")
lstBox1 = oDialog1.GetControl("ListBox1")
cmbBox1 = oDialog1.GetControl("ComboBox1")
if chkBox1.State = 1 then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,1)
oCell.String = "Debian"
end if
if chkBox2.State = 1 then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,2)
oCell.String = "Ubuntu"
end if
if chkBox3.State = 1 then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,3)
oCell.String = "elementary"
end if
oCell = ThisComponent.Sheets(0).getCellByPosition(1,5)
oCell.String = lstBox1.getSelectedItem()
oCell = ThisComponent.Sheets(0).getCellByPosition(1,6)
oCell.String = cmbBox1.SelectedText()
if optBtn1.State = True then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,7)
oCell.String = "No"
end if
if optBtn2.State = True then
oCell = ThisComponent.Sheets(0).getCellByPosition(1,8)
oCell.String = "Yes"
end if
End Sub
Fonte: Debugpoint
Leia também os outros tutoriais sobre Macro clique nos títulos abaixo:
muito bom
ResponderExcluirEider, obrigado e espero que tenha ajudado.
ExcluirMuito útil. Tem como retirar o sublinhado do texto no CheckBox?
ResponderExcluir