Ajuda do LibreOffice 24.8
A seguir é descrita a utilização básica de procedimentos, funções e propriedades no Basic LibreOffice.
Quando um novo módulo é criado, o Basic LibreOffice automaticamente insere uma Sub chamada "Main". Esse nome padrão não está diretamente ligado com a ordem ou ponto de início de um projeto Basic LibreOffice. É possível renomear seguramente esta rotina Sub.
Algumas restrições se aplicam para os nomes de suas variáveis públicas, subrotinas, funções e propriedades. É necessário evitar usar os mesmos nomes dos módulos da mesma biblioteca.
Procedimentos (Subrotinas) funções (Function) e propriedades (Property) ajudam a manter uma visão geral estruturada pela separação de um programa em partes lógicas.
Um benefício de procedimentos, funções e propriedades é que, uma vez que se tenha desenvolvido um código de programa contendo componentes de tarefas, é possível utilizar esse código em outro projeto.
Variáveis podem ser passadas para procedimentos, funções ou propriedades. A Sub Function ou Property deve ser declarada para esperar parâmetros:
Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
' o código vai aqui
End Sub
A Sub é chamada usando a seguinte sintaxe:
[Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Os parâmetros passados para uma Sub deve ser compatível com aqueles especificados na declaração da Sub .
O mesmo se aplica à uma Function. Adicionalmente, funções sempre retornam um resultado de função. O resultado de uma função é definido ao designar o valor de retorno para o nome da função:
Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
' seu código vai aqui
FunctionName=Result
End Function
A Function é chamada usando a seguinte sintaxe:
Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Propriedades combinam a sintaxe de procedimentos e funções. Uma Propriedade normalmente requer pelo menos um parâmetro.
Private _IsApproved As TYPENAME
Property Get IsApproved As TYPENAME
' seu código vai aqui
IsApproved = some_computation
End Property
Property Let IsApproved(value As TYPENAME)
' seu código vai aqui
_IsApproved = computed_value
End Property
A Property é chamada usando a seguinte sintaxe:
var = IsApproved
IsApproved = some_value
Também é possível utilizar o nome completamente qualificado para chamar um procedimento, função ou propriedade:
[Call] Library.Module.Macro(), onde Call é opcional.
Por exemplo, para chamar a macro Autotexto da biblioteca Gimmicks, utilize o seguinte comando:
Gimmicks.AutoText.Main()
Parâmetros podem ser passados para um procedimento, uma função ou uma propriedade tanto por referência como por valor. A não ser que especificado de outra forma, um parâmetro é sempre passado por referência. Isso significa que uma Sub, uma Function ou uma Property recebe o parâmetro e pode ler e modificar seu valor.
Se desejar passar um parâmetro por valor, insira a palavra-chave ByVal na frente do parâmetro quando chamar uma Sub, uma Function ou uma Property, por exemplo:
Function ReadOnlyParms(ByVal p2, ByVal p2)
' seu código vai aqui
End Function
result = ReadOnlyParms(parm1, parm2)
Nesse caso, o conteúdo original do parâmetro não será modificado pela Function uma vez que recebe o valor e não o parâmetro em si.
Funções, procedimentos ou propriedades podem ser definidas com parâmetros opcionais, por exemplo:
Sub Rounding(number, Optional decimals, Optional format)
' seu código vai aqui
End Sub
Ao chamar uma função ou sub-rotina, você pode passar seus argumentos por posição ou por nome. Passar por posição significa apenas listar os argumentos na ordem em que os parâmetros são definidos na função ou sub-rotina. A passagem por nome requer que você prefixe o argumento com o nome do parâmetro correspondente seguido por dois pontos e um sinal de igual (: = ). Os argumentos de palavra-chave podem aparecer em qualquer ordem. Consulte a função do Basic Replace() para esses exemplos.
Quando precisar passar menos parâmetros, use argumentos com palavras-chave. Passar valores com menos parâmetros por posição requer que forneça valores para todos os parâmetros anteriores, opcionais ou não. Isso garante que os valores estejam nas posições corretas. Se passar os parâmetros por nome - usando argumentos de palavra-chave - você pode omitir todos os outros argumentos intermediários.
Uma variável definida dentro de Sub, Function ou Property, só é válida até que o procedimento encerre. É conhecido como variável "local". Em muitos casos você precisa de uma variável que seja válida em todos os procedimentos, em todos os módulos de todas as bibliotecas, ou depois que uma Sub, Function ou Property é encerrada.
Global VarName As TYPENAME
A variável é válida enquanto durar a sessão do LibreOffice
Public VarName As TYPENAME
A variável é válida em todos os módulos.
Private VarName As TYPENAME
A variável é válida somente neste módulo.
Dim VarName As TYPENAME
A variável é válida somente neste módulo.
Force manter as variáveis privadas para todos os módulos definindo CompatibilityMode(True).
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Olá"
Print "no módulo 1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( True )
initMyText
' Retorna agora uma string vazia
' (ou aciona um erro para Option Explicit)
Print "Agora no módulo2 : ", myText
End Sub
Static VarName As TYPENAME
A variável retem seu valor até a próxima vez que uma Function, Sub ou Property é inserida. A declaração precisa existir dentro de uma Sub, uma Function ou uma Property.
Tal como variáveis, inclua um caractere de declaração de tipo depois do nome da função, ou digite o tipo indicado por As seguido do tipo de dado correspondente no fim da lista de parâmetros para definir o tipo da função ou do valor de retorno da propriedade, por exemplo:
Function WordCount(WordText As String) As Integer