Ayuda de LibreOffice 26.8
A continuación se describe el uso básico de los procedimientos, las funciones y las propiedades de LibreOffice BASIC.
Cuando crea un módulo nuevo, LibreOffice BASIC inserta automáticamente una Sub llamada «Main». Este nombre predeterminado no tiene nada que ver con el orden o el punto de arranque de un proyecto de LibreOffice BASIC. Además, es seguro cambiar el nombre de esta Subrutina.
Se aplican algunas restricciones a los nombres de sus variables públicas, subrutinas, funciones y propiedades. No debe emplear el mismo nombre que otro de los módulos de la misma biblioteca.
Los procedimientos (Subrutinas), funciones (Function) y propiedades (Property) le ayudan a mantener una descripción general estructurada al separar un programa en partes lógicas. Estas piezas se pueden reutilizar fácilmente para realizar tareas similares en otros proyectos.
Se pueden pasar variables tanto a procedimientos como a funciones o propiedades. Se debe declarar qué parámetros espera la Sub, Function o Property:
Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
' su código va aquí
End Sub
Se llama a la Sub mediante la sintaxis siguiente:
[Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Los parámetros pasados a una Sub deben ajustarse a los especificados en la declaración de la Sub.
El mismo proceso se aplica a una Function. Además, las funciones siempre devuelven un resultado. Este resultado se define asignando el valor que devuelve al nombre de la función:
Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
' su código va aquí
FunctionName=Result
End Function
Se llama a la Function mediante la sintaxis siguiente:
Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Las propiedades combinan la sintaxis de procedimientos y funciones. Una Property normalmente requiere al menos un parámetro.
Private _IsApproved As TYPENAME
Property Get IsApproved As TYPENAME
' su código va aquí
IsApproved = some_computation
End Property
Property Let IsApproved(value As TYPENAME)
' su código va aquí
_IsApproved = computed_value
End Property
Se llama a la Property mediante la sintaxis siguiente:
var = IsApproved
IsApproved = some_value
También puede utilizar el nombre completo para llamar a un procedimiento, función o propiedad:
[Call] Library.Module.Macro(), donde Call es facultativo.
Por ejemplo, para llamar a la macro Autotext desde la biblioteca Gimmicks, use la orden siguiente:
Gimmicks.AutoText.Main()
Los parámetros se pueden pasar a un procedimiento, una función o una propiedad ya sea por referencia o por valor. A menos que se especifique lo contrario, un parámetro siempre se pasa por referencia. Eso significa que una Sub, una Function o una Property obtienen el parámetro y pueden leer y modificar su valor.
Si desea pasar un parámetro por valor, inserte la palabra clave ByVal delante del parámetro cuando llame a una Sub, una Function o una Property, por ejemplo:
Function ReadOnlyParms(ByVal p2, ByVal p2)
' su código va aquí
End Function
result = ReadOnlyParms(parm1, parm2)
En este caso, la Función no modificará el contenido original del parámetro ya que solo obtiene el valor y no el parámetro en sí.
Es posible definir funciones, procedimientos o propiedades con parámetros opcionales; por ejemplo:
Sub Rounding(number, Optional decimals, Optional format)
' su código va aquí
End Sub
Al llamar a una función o subrutina, puede pasar sus argumentos por posición o por nombre. El paso por posición consiste simplemente en enumerar los argumentos en el orden en que están definidos los parámetros en la función o subrutina. El paso por nombre requiere anteponer al argumento el nombre del parámetro correspondiente, seguido de dos puntos y un signo de igualdad (:=). Los argumentos de palabra clave pueden aparecer en cualquier orden. Consulte la función Replace() de BASIC para ver ejemplos de este tipo.
Cuando necesite pasar menos parámetros, utilice argumentos de palabras clave. Pasar valores para menos parámetros por posición requiere proporcionar valores para todos los parámetros anteriores a ellos, opcionales o no. Esto asegura que los valores estén en las posiciones correctas. Si pasa los parámetros por nombre (usando argumentos de palabras clave) puede omitir los demás argumentos intermedios.
Una variable definida dentro de una Sub, una Function o una Property, solo permanece válida hasta que se sale del procedimiento. Esto se conoce como variable "local". En muchos casos, necesita que una variable sea válida en todos los procedimientos, en cada módulo de todas las bibliotecas o después de salir de una Sub, una Function o una Property.
Global VarName As TYPENAME
La variable es válida mientras dure la sesión de LibreOffice.
Public VarName As TYPENAME
La variable es válida en todos los módulos.
Private VarName As TYPENAME
La variable solo es válida en este módulo.
Dim VarName As TYPENAME
La variable solo es válida en este módulo.
Fuerce que las variables privadas lo sean en todos los módulos estableciendo CompatibilityMode(True).
' ***** Module1 *****
Private myText As String
Sub initMyText
miTexto = "Hola"
Print "En módulo1 : ", miTexto
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( True )
initMyText
' Ahora devuelve una cadena vacía
' (o produce un error con Option Explicit)
Print "Ahora en módulo2 : ", miTexto
End Sub
Static VarName As TYPENAME
La variable conserva su valor hasta la próxima vez que se utiliza en una Function, Sub o una Property. La declaración debe existir dentro de una Sub, una Function o una Property.
Al igual que con las variables, incluya un carácter de declaración de tipo después del nombre de la función, o el tipo indicado por As y el tipo de datos correspondiente al final de la lista de parámetros para definir el tipo de valor de retorno de la función o propiedad, por ejemplo:
Function WordCount(WordText As String) As Integer