Помощ за LibreOffice 7.1
По-долу са описани основите на работа с процедури, функции и свойства в LibreOffice Basic.
Когато създадете нов модул, LibreOffice Basic автоматично вмъква процедура (Sub) с име „Main“. Това подразбирано име не е свързано с реда или началната точка на изпълнение на проект на LibreOffice Basic. Можете безопасно да преименувате тази подпрограма от тип Sub.
За имената на публичните променливи, подпрограми, функции и свойства са в сила някои ограничения. Не трябва да използвате име, еднакво с това на модул от същата библиотека.
Процедурите (подпрограми със Sub), функциите (Function) и свойствата (Property) ви помагат да структурирате програмата, като я разделите на логически обособени части.
Едно предимство на процедурите, функциите и свойствата е, че след като веднъж сте разработили програмен код, разделен на компоненти за определени задачи, можете да ги използвате отново в друг проект.
Можете да предавате променливи към процедури, функции и свойства. В декларацията на съответната подпрограма (Sub, Function или Property) трябва е указано, че тя очаква параметри:
Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
' място за вашия код
End Sub
Процедурата (Sub) се извиква със следния синтаксис:
SubName(Value1, Value2,...)
Подадените към процедура параметри трябва да съответстват на указаните в декларацията Sub.
Същото се отнася за функциите (Function). Освен това функциите винаги връщат резултат. Резултатът на функция се дефинира, като връщаната стойност се присвои на името на функцията:
Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
' място за вашия код
FunctionName=Result
End Function
Функцията (Function) се извиква със следния синтаксис:
Variable=FunctionName(Parameter1, Parameter2,...)
Свойствата комбинират синтаксиса на процедурите и функциите. Те обикновено изискват не повече от един параметър.
Private _IsApproved As TYPENAME
Property Get IsApproved As TYPENAME
' място за вашия код
IsApproved = some_computation
End Property
Property Let IsApproved(value As TYPENAME)
' място за вашия код
_IsApproved = computed_value
End Property
Свойството (Property) се извиква със следния синтаксис:
var = IsApproved
IsApproved = some_value
За обръщение към процедура, функция или свойство можете да използвате и напълно квалифицирано име:
Библиотека.Модул.Макрос()
Например, за да извикате макроса Autotext от библиотеката Gimmicks, ще използвате следната команда:
Gimmicks.AutoText.Main()
Към процедури, функции и свойства могат да се подават параметри по адрес или по стойност. Ако не е указано друго, параметрите винаги се предават по адрес. Това означава, че подпрограмата от тип Sub, Function или Property получава параметъра и може да чете и променя стойността му.
Ако искате да предадете параметър по стойност, вмъкнете пред него ключовата дума ByVal, когато извиквате подпрограма от тип Sub, Function или Property, например:
Function ReadOnlyParms(ByVal p2, ByVal p2)
' място за вашия код
End Function
result = ReadOnlyParms(parm1, parm2)
В този случай оригиналното съдържание на параметъра няма да бъде променено от функцията, тъй като тя получава само стойността, но не и самия параметър.
Функциите, процедурите и свойствата могат да бъдат дефинирани с незадължителни параметри, например:
Sub Rounding(number, Optional decimals, Optional format)
' място за вашия код
End Sub
Променливите, дефинирани в подпрограма от тип Sub, Function или Property, са валидни само до излизане от подпрограмата. Такива променливи се наричат „локални“. В много случаи е необходимо една променлива да е валидна във всички подпрограми, във всички модули на всички библиотеки или след излизане от подпрограма Sub, Function или Property.
Global VarName As TYPENAME
Променливата е валидна, докато трае сесията на LibreOffice.
Public VarName As TYPENAME
Променливата е валидна за всички модули.
Private VarName As TYPENAME
Променливата е валидна само в този модул.
Dim VarName As TYPENAME
Променливата е валидна само в този модул.
За да направите частните променливи частни за всички модули, задайте CompatibilityMode(True).
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Здравейте"
Print "В module1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( True )
initMyText
' Сега връща празен низ
' (или предизвиква грешка за Option Explicit)
Print "Сега в module2 : ", myText
End Sub
Static VarName As TYPENAME
Променливата запазва стойността си до следващото влизане в съответната подпрограма Function, Sub или Property. Декларацията трябва да е в такава подпрограма.
Както и при променливите, за да дефинирате типа на връщаната стойност на функция или свойство, добавете знак за деклариране на тип след името на функцията или укажете типа с As и име на тип данни в края на списъка с параметри, например:
Function WordCount(WordText As String) As Integer