Bruk av prosedyrar, funksjonar og eigenskapar
Her er ein omtale av grunnlaget for bruk av prosedyrar, funksjonar og eigenskapar i LibreOffice Basic.
NÄr du lagar ein ny modul, set LibreOffice Basic automatisk inn ein Sub med namnet «Main». Dette standardnamnet har ingenting med rekkjefÞlgja eller startpunktet for eit LibreOffice Basicprosjekt. Du kan trygt gje Sub-rutinen eit anna namn.
Set er nokre avgrensingar for kva namn du kan bruka pÄ PUBLIC-variablar, subrutinar, funksjonar og eigenskapar. Du kan ikkje bruka det same namnet som ein av modulane i det same biblioteket.
Prosedyrar (Sub-rutinar) funksjonar (Function) og eigenskapar (Property) er til hjelp for Ă„ halda eit strukturert oversyn ved Ă„ dela programmet opp i logiske delar.
Ein fordel med prosedyrar, funksjonar og eigenskapar er at nÄr du har laga ein programkode som inneheld aktivitetskomponentar, kan du bruka denne koden i eit anna prosjekt.
OverfĂžra variablar mellom prosedyrar, funksjonar og eigenskapar
Variablar kan overfÞrast til bÄde prosedyrar, funksjonar og eigenskapar. Sub, Function eller Property mÄ vera deklarerte for Ä kunna innehalda parametrar.
Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
' her kjem koden din
End Sub
Sub vert kalla opp med denne syntaksen:
SubName(Value1, Value2,...)
Parametera som skal overfÞrast til Sub mÄ passa med dei deklarerte for Sub.
Den same prosessen overfĂžrt til Function. I tillegg returnerer ein funksjon alltid eit resultat. Resultatet av ein funksjon vert definert ved Ă„ tilordna returverdien til funksjonsnamnet:
Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
' her kjem koden din
FunctionName=Result
End Function
Function vert kalla opp med denne syntaksen:
Variable=FunctionName(Parameter1, Parameter2,...)
Eigenskapane kombinerer syntaksen for prosedyrar og funksjonar. Ein eigenskap treng til vanleg opp til ein parameter.
Private _IsApproved As TYPENAME
Property Get IsApproved As TYPENAME
' her kjem koden din
IsApproved = some_computation
End Property
Property Let IsApproved(value As TYPENAME)
' her kjem koden din
_IsApproved = computed_value
End Property
Property vert kalla opp med denne syntaksen:
var = IsApproved
IsApproved = some_value
Du kan ogsÄ bruka det fullstendige namnet til Ä kalla opp ein prosedyre, funksjon eller eigenskap:
Library.Module.Macro()
For eksempel kan du kalla opp Autotext-makroen frÄ Gimmicks-biblioteket, med denne kommandoen:
Gimmicks.AutoText.Main()
Ă overfĂžra variablar som verdi eller referanse
Du kan senda parametrar til ein prosedyre, ein funksjon eller ein eigenskap anten som referanse eller verdi. Med mindre anna er spesifisert, vert ein parameter alltid sendt som referanse. Det betyr at ein Sub, ein Function eller ein Property fÄr parameteren og kan lesa og endra verdien.
Dersom du vil overfÞra ein parameterverdi, set inn nÞkkelordet ByVal framfÞre parameteren nÄr du gjer oppkall til for eksempel ein Sub, ein Function eller ein Property:
Function ReadOnlyParms(ByVal p2, ByVal p2)
' her kjem koden din
End Function
result = ReadOnlyParms(parm1, parm2)
I dette tilfellet vert innhaldet i parameteren ikkje endra sidan Function fÄr berre verdien og ikkje parameteren.
Definera valfrie parametrar
Funksjonar, prosedyrar og eigenskapar kan definerast med valfrie parametrar, for eksempel
Sub Rounding(number, Optional decimals, Optional format)
' her kjem koden din
End Sub
VariabelomrÄde
Ein variabel som er definert inne i ein Sub, Function eller Property er gyldig berre inne i prosedyren. Dette er det som vert kalla ein «lokal» variabel. Ofte har du i tillegg ogsÄ bruk for variablar som er tilgjengelege i heile programmet, inne i alle modulane og ogsÄ etter at ein Sub, Function eller Property er avslutta.
Definera variablar utanfor ein Sub, Function eller Property
Global VarName As TYPENAME
Variabelen er gyldig sÄ lenge LibreOffice-Þkta varer.
Public VarName As TYPENAME
Variabelen er gyldig i alle modulane.
Private VarName As TYPENAME
Variabelen er berre gyldig innfĂžre denne modulen.
Dim VarName As TYPENAME
Variabelen er berre gyldig innfĂžre denne modulen.
Eksempel pÄ private variablar
Tving private variablar til Ä vere private pÄ tvers av modular med innstillinga CompatibilityMode(true).
' ***** Module1 *****
Private myText As String
Sub initMyText
minTekst = "Hallo"
Print "I modul1: ", minTekst
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( True )
initMyText
' Returnerer nÄ ein tom streng
' (eller det oppstÄr feil for Option Explicit)
Print "NĂ„ i modul2: ", minTekst
End Sub
Lagra innhaldet i variablar etter kĂžyring av ein Sub, Function eller Property
Static VarName As TYPENAME
Variabelen held pÄ verdien til neste gong ein Function, Sub eller Property vert brukt. Deklarasjonen mÄ vera inne i ein Sub, Function eller Property .
Bestemmer kva type returverdien skal vera for ein Function eller Property
PÄ same mÄten som med variablar, kan du definera returverdien for funksjonen ved Ä ta med eit typedeklarasjonsteikn etter funksjonsnamnet eller typen indikert med As og deretter den tilsvarande datatypen pÄ slutten av parameterlista, for eksempel:
Function WordCount(WordText As String) As Integer