Este
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.
Este tutorial vai cobrir sobre como criar um LibreOffice Dialog básico e adicionando vários controles, tais como TextBox. Também cobre sobre como ler os valores de controle usando Calc Macros.
Adicionando um Dialogo
Para adicionar um diálogo no LibreOffice Calc, selecione no menu: Ferramentas -> Macros -> Organizar Diálogos ...
Criar Dialogo a partir do Menu |
Uma vez que as opções acima é escolhido, abaixo LO Basc Organizer Macro abrira. No Tab diálogo, clique no botão Novo.
Crie um novo Dialogo |
No New diálogo pop-up, dê um nome para o seu diálogo. Para este tutorial, vamos mantê-lo como padrão Diálogo1. Pressione OK.
Novo Dialogo |
Você pode ver o Diálogo1 subiu em Meus Diálogos -> Standard -> Dialog1.
Adicionando um controle TextBox
No mesmo Organizer Macro LO Basic, clique em Editar enquanto Diálogo1 é selecionado.
Edite Dialogo |
Editor diálogo inteira abriria dentro LO Calc. Agora é hora de adicionar alguns controles. Para simplificar, eu gostaria de acrescentar uma caixa de texto e um botão.
Os controlos são colocados na parte inferior. Selecione um controle e arraste o mouse dentro da caixa de diálogo para colocar o controle desejado. Para este tutorial, adicione uma caixa de texto e um botão. Se você não conseguir ver a caixa de ferramentas na parte inferior da tela, selecione a partir do menu: Ver -> Barras de Ferramentas -> Toolbox.
O diálogo deve ser assim agora.
Dialogo |
Para definir as propriedades de cada controles, clique / selecione o controle, então você pode ver a janela de propriedades aberta no lado inferior esquerdo do editor. Na janela de propriedades, o valor 'nome' da guia Geral seria usado para identificar os objetos dentro Macro.
Para caixa de texto o nome padrão é: TextField1, para o botão que é: CommandButton1.
Diálogo com Propriedades |
Agora, estão todos definidos com o diálogo, por enquanto. Vamos escrever a macro.
A Macro
Usando uma macro LO Calc, vou mostrar como abrir a caixa de diálogo, leia o conteúdo da caixa de texto e algum conteúdo da célula Calc de sheet1. Em seguida, mostrar o conteúdo da caixa de texto e conteúdo do celular como um prompt de caixa de mensagem enquanto o botão é clicado.
Vá para o editor macro (clique na guia Module1) e criar duas funções, conforme abaixo.
Dim oDialog1 As ObjectSub StartDialog1()
' Code for initiating and showing the dialog
End Sub
Sub readDialog1()
' Read the content
End Sub
Declare uma Dialog1 objeto como tipo de objeto fora do escopo funções. Porque nós precisamos para acessar o diálogo em uma função diferença.
Em função StartDialog1 () que irá carregar a biblioteca "Tools". De acordo com design atual do LibreOffice, as bibliotecas são implementadas como interfaces UNO, não como serviço UNO. Quando o LibreOffice é iniciada, nem todas as bibliotecas básicas são carregados para economizar tempo. Assim, se você criou a sua própria biblioteca de dizer, Library1, você precisa carregar a biblioteca explicitamente dentro de base para identificar as funções definidas pelo usuário. Para carregar qualquer biblioteca, use as propriedades embutidas BasicLibraries.LoadLibrary.
Para este tutorial, vamos usar o LibreOffice predefinidos biblioteca "Ferramentas" com o código abaixo. Propriedade LoadLibrary irá carregar a biblioteca de Ferramentas e, em seguida, usando a função LoadDialog () e função Executar vamos mostrar o diálogo criado.
Sub StartDialog1()
BasicLibraries.LoadLibrary(“Tools”)
oDialog1 = LoadDialog("Standard", "Dialog1")
oDialog1.Execute()
End Sub
Código Alternativo:
Usando abaixo trechos também, uma caixa de diálogo pode ser aberto.
DialogLibraries.LoadLibrary(“Standard”)
oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
Agora é hora de ler o conteúdo da caixa de texto e 1 célula de Sheet1 do Calc ou seja A1. Para obter um porão de um controle, use GetControl função (controlName) do objeto de diálogo. Uma vez que o objeto está pronto, você pode usar várias propriedades disponíveis. Para obter o texto digitado na caixa de texto, use texto() propriedade de controle.
Sub readDialog1()
Dim cell_val
oT1 = oDialog1.GetControl("TextField1")
cell_val = ThisComponent.Sheets(0).getCellByPosition(0,0)
msgbox cell_val.String & chr(13) & “Value from controls: ” & oT1.Text
End Sub
Dim cell_val
oT1 = oDialog1.GetControl("TextField1")
cell_val = ThisComponent.Sheets(0).getCellByPosition(0,0)
msgbox cell_val.String & chr(13) & “Value from controls: ” & oT1.Text
End Sub
Antes de executar a macro, é preciso atribuir a função readDialog1 () para botão de clique evento. Para fazer isso, volte para Editor de diálogo e selecione a commandbutton. Na janela de propriedades, selecione o item Events. Atribuir a função readDialog1 (), clicando no botão Executar Ação e escolher a macro.
Run
Coloque qualquer texto na célula A1 do Calc sheet1 - para este tutorial, eu coloquei "hello word".
Abra o editor de Macro e executar o StartDialog1 function (). O diálogo seria executado e pop-up. Agora, colocar algum texto na caixa de texto e clique no botão. Você deve ver o texto da caixa de texto a partir do diálogo, bem como a partir de célula A1 do sheet1 Calc.
Abra o editor de Macro e executar o StartDialog1 function (). O diálogo seria executado e pop-up. Agora, colocar algum texto na caixa de texto e clique no botão. Você deve ver o texto da caixa de texto a partir do diálogo, bem como a partir de célula A1 do sheet1 Calc.
Executando a Macro |
Dessa forma, você pode trabalhar com diálogos e controles via Macro básico no LibreOffice Calc.
Assista o vídeo deste tutorial.
Função Referências - usado neste artigo:
var = Dialog.GetControl ("ControlName"): Volta lidar com o objeto de controle
TextBoxControl.Text (): Retorna o valor de caixa de texto [String]
BasicLibraries.LoadLibrary ("LibraryName")
var = LoadDialog ("LibraryName", "DialogName"): Volta para lidar com o diálogo.
DialogHandle.Execute ()
Macro completo
Para executar, copiar e colar todo este bloco de código a seguir no Editor de Macros do LibreOffice.
Dim oDialog1 As Object
Sub StartDialog1()
BasicLibraries.LoadLibrary("Tools")
oDialog1 = LoadDialog("Standard", "Dialog1")
oDialog1.Execute()
End Sub
Sub readDialog1()
Dim cell_val
oT1 = oDialog1.GetControl("TextField1")
cell_val = ThisComponent.Sheets(0).getCellByPosition(0,0)
msgbox cell_val.String & chr(13) & "Value from controls: " & oT1.Text
End Sub
Fonte: DebugPoint
Dim oDialog1 As Object
ResponderExcluirSub StartDialog1()
BasicLibraries.LoadLibrary("Tools")
oDialog1 = LoadDialog("Standard", "Dialog1")
oDialog1.Execute()
End Sub
Sub readDialog1()
Dim cell_val
oT1 = oDialog1.GetControl("TextField1")
cell_val = ThisComponent.Sheets(0).getCellByPosition(0,0)
msgbox cell_val.String & chr(13) & "Value from controls: " & oT1.Text
End Sub
esta formula não dá certo com libreoffice; dá erro Variável do objeto não definida.
Já tento verificar no post original pelo link:
Excluirhttp://www.debugpoint.com/2015/01/working-with-dialog-controls-in-libreoffice-calc-using-macro-part-1/
Olá, boa noite!
ResponderExcluirGostaria de saber como fazer para ao abrir o calc abrir o basic.
semelhante ao evento workbook open no vba.
parece que não usam tabelas de bases de dados Como fazer isso esmo com uma Tabela em vez de usar uma planilha ou folha de cáculo. Como demensionar oIntervalo = oPlan.getCellRangeByPosition(0,1,3,UltimaLinha(oPlan)) com a table data base
ResponderExcluir