Pular para o conteúdo principal

Processamento de Formulário com LibreOffice Calc Macro - Parte 2

LibreOffice Macro TutorialsEste tutorial foi retirado do site Debugpoint, não mudei nada nenhuma linha de comando, apenas traduzir a explicação do tutorial e espero que ajudem a todos.

 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)

https://i0.wp.com/www.debugpoint.com/blog/wp-content/uploads/2015/05/Toolbox-in-LibreOffice.png
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

Designed Form

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 

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() 

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 

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.
 

Form with Values Selected
 
  Output
  
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:

Comentários

Postar um comentário