Difference between revisions of "NL/Documentation/BASIC Guide/Other Instructions"
m |
m (→Kwalificaties) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 19: | Line 19: | ||
Met de argumenten <tt>Type...End Type</tt> kunt u uw eigen (niet-UNO) structs definiëren: | Met de argumenten <tt>Type...End Type</tt> kunt u uw eigen (niet-UNO) structs definiëren: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Type aMenuItem 'toewijzen van de naam van het type | Type aMenuItem 'toewijzen van de naam van het type | ||
'Definieer de gegevensvelden binnen de struct. Elke | 'Definieer de gegevensvelden binnen de struct. Elke | ||
Line 26: | Line 26: | ||
aText as String | aText as String | ||
End Type 'sluit de definitie | End Type 'sluit de definitie | ||
− | </ | + | </syntaxhighlight> |
=== Instantie === | === Instantie === | ||
Line 32: | Line 32: | ||
De definitie <tt>Type</tt> is slechts een patroon of sjabloon, geen verzameling van echte variabelen. Gebruik het argument <tt>Dim as New</tt> om een ''instance'' te maken van het type — echte variabelen die kunnen worden gelezen en opgeslagen —: | De definitie <tt>Type</tt> is slechts een patroon of sjabloon, geen verzameling van echte variabelen. Gebruik het argument <tt>Dim as New</tt> om een ''instance'' te maken van het type — echte variabelen die kunnen worden gelezen en opgeslagen —: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Dim maItem as New aMenuItem | Dim maItem as New aMenuItem | ||
− | </ | + | </syntaxhighlight> |
=== Bereik === | === Bereik === | ||
Line 40: | Line 40: | ||
Zoals weergegeven in het voorbeeld hieronder kan de definitie <tt>Type</tt> aan het begin van een module worden geschreven (vóór de eerste <tt>Sub</tt> of <tt>Function</tt>). De definitie zal dan beschikbaar zijn voor alle routines in de module. | Zoals weergegeven in het voorbeeld hieronder kan de definitie <tt>Type</tt> aan het begin van een module worden geschreven (vóór de eerste <tt>Sub</tt> of <tt>Function</tt>). De definitie zal dan beschikbaar zijn voor alle routines in de module. | ||
− | Vanaf | + | Vanaf OpenOffice.org versie 3.0 is er, anders dan met variabelen, geen manier om de definitie toegankelijke te maken buiten de module. |
Een instantie van het nieuwe type ''is'' een variabele en volgt de gebruikelijke regels voor het bereik van variabelen (bekijk [[NL/Documentation/BASIC Guide/Scope of Variables|Bereik en levensduur van variabelen]]). | Een instantie van het nieuwe type ''is'' een variabele en volgt de gebruikelijke regels voor het bereik van variabelen (bekijk [[NL/Documentation/BASIC Guide/Scope of Variables|Bereik en levensduur van variabelen]]). | ||
Line 49: | Line 49: | ||
=== Kwalificaties === | === Kwalificaties === | ||
In het algemeen kijkt BASIC niet in een container, zoals een <tt>Object</tt>, om te zien welke namen daar zouden kunnen zijn gedefinieerd. Als u een dergelijke naam wilt gebruiken, zult u BASIC moeten vertellen waar het moet kijken. U doet dat door de naam van het object te gebruiken als een ''kwalificatie''. Schrijf het vóór de binnenste naam en scheidt ze met een punt: | In het algemeen kijkt BASIC niet in een container, zoals een <tt>Object</tt>, om te zien welke namen daar zouden kunnen zijn gedefinieerd. Als u een dergelijke naam wilt gebruiken, zult u BASIC moeten vertellen waar het moet kijken. U doet dat door de naam van het object te gebruiken als een ''kwalificatie''. Schrijf het vóór de binnenste naam en scheidt ze met een punt: | ||
− | + | <syntaxhighlight lang="oobas"> | |
MijnObject.EenNaam | MijnObject.EenNaam | ||
− | + | </syntaxhighlight> | |
Omdat containers ander containers zouden kunnen bevatten, zou u misschien meer dan één kwalificatie nodig hebben. Schrijf de kwalificaties in volgorde, van buiten naar binnen: | Omdat containers ander containers zouden kunnen bevatten, zou u misschien meer dan één kwalificatie nodig hebben. Schrijf de kwalificaties in volgorde, van buiten naar binnen: | ||
− | + | <syntaxhighlight lang="oobas"> | |
BuitensteObject.BinnensteObject.VerBinnenObject.EenNaam | BuitensteObject.BinnensteObject.VerBinnenObject.EenNaam | ||
− | + | </syntaxhighlight> | |
Deze namen kunnen ook worden beschreven als "samengevoegd met de operator punt ('.')". | Deze namen kunnen ook worden beschreven als "samengevoegd met de operator punt ('.')". | ||
Line 66: | Line 66: | ||
Dit voorbeeld geeft weer hoe u een struct kunt definiëren en gebruiken, en hoe naar de items erin te verwijzen, zowel met als zonder <tt>With</tt>. In beide gevallen moeten de namen van de gegevensvelden (uit de definitie <tt>Type</tt>) worden gekwalificeerd door de naam van de instantie (uit het argument <tt>Dim</tt>). | Dit voorbeeld geeft weer hoe u een struct kunt definiëren en gebruiken, en hoe naar de items erin te verwijzen, zowel met als zonder <tt>With</tt>. In beide gevallen moeten de namen van de gegevensvelden (uit de definitie <tt>Type</tt>) worden gekwalificeerd door de naam van de instantie (uit het argument <tt>Dim</tt>). | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Type aMenuItem | Type aMenuItem | ||
aCommand as String | aCommand as String | ||
Line 84: | Line 84: | ||
& "Tekst: " & maItem.aText | & "Tekst: " & maItem.aText | ||
End Sub | End Sub | ||
− | </ | + | </syntaxhighlight> |
=== Voorbeeld 2: argument Case === | === Voorbeeld 2: argument Case === | ||
− | In [[NL/Documentation/BASIC_Guide/Cells and Ranges|Cellen en bereiken]] zijn in het volgende voorbeeld de kwalificaties in de argumenten <tt>Case</tt>, voor de duidelijkheid, volledig uitgeschreven. U kunt het | + | In [[NL/Documentation/BASIC_Guide/Cells and Ranges|Cellen en bereiken]] zijn in het volgende voorbeeld de kwalificaties in de argumenten <tt>Case</tt>, voor de duidelijkheid, volledig uitgeschreven. U kunt het, op deze manier, eenvoudiger schrijven: |
− | < | + | <syntaxhighlight lang="oobas"> |
Dim Doc As Object | Dim Doc As Object | ||
Dim Sheet As Object | Dim Sheet As Object | ||
Line 113: | Line 113: | ||
End Select | End Select | ||
End With | End With | ||
− | </ | + | </syntaxhighlight> |
Merk op dat de constructie <tt>With</tt> geheel buiten de constructie <tt>Select</tt> moet staan. | Merk op dat de constructie <tt>With</tt> geheel buiten de constructie <tt>Select</tt> moet staan. | ||
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Other Instructions}} | {{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Other Instructions}} | ||
{{PDL1}} | {{PDL1}} |
Latest revision as of 14:54, 26 August 2022
Contents
Type...End Type
Struct
Een struct is een geordende collectie van gegevensvelden, die kunnen worden bewerkt als één enkel item. Met andere woorden: u kunt aan een struct denken als aan een record, of gedeelte van een record.
De API gebruikt vaak vooraf gedefinieerde structs, maar dat zijn UNO structs, een zeer gespecialiseerd soort struct.
Definitie
Met de argumenten Type...End Type kunt u uw eigen (niet-UNO) structs definiëren:
Type aMenuItem 'toewijzen van de naam van het type 'Definieer de gegevensvelden binnen de struct. Elke ' definitie ziet er uit als een argument Dim, zonder de "Dim". aCommand as String aText as String End Type 'sluit de definitie
Instantie
De definitie Type is slechts een patroon of sjabloon, geen verzameling van echte variabelen. Gebruik het argument Dim as New om een instance te maken van het type — echte variabelen die kunnen worden gelezen en opgeslagen —:
Dim maItem as New aMenuItem
Bereik
Zoals weergegeven in het voorbeeld hieronder kan de definitie Type aan het begin van een module worden geschreven (vóór de eerste Sub of Function). De definitie zal dan beschikbaar zijn voor alle routines in de module.
Vanaf OpenOffice.org versie 3.0 is er, anders dan met variabelen, geen manier om de definitie toegankelijke te maken buiten de module.
Een instantie van het nieuwe type is een variabele en volgt de gebruikelijke regels voor het bereik van variabelen (bekijk Bereik en levensduur van variabelen).
Een voorbeeld van het gebruiken van de definitie, en hoe naar de velden in een instantie te verwijzen, staat in het gedeelte over With...End With.
With...End With
Kwalificaties
In het algemeen kijkt BASIC niet in een container, zoals een Object, om te zien welke namen daar zouden kunnen zijn gedefinieerd. Als u een dergelijke naam wilt gebruiken, zult u BASIC moeten vertellen waar het moet kijken. U doet dat door de naam van het object te gebruiken als een kwalificatie. Schrijf het vóór de binnenste naam en scheidt ze met een punt:
MijnObject.EenNaam
Omdat containers ander containers zouden kunnen bevatten, zou u misschien meer dan één kwalificatie nodig hebben. Schrijf de kwalificaties in volgorde, van buiten naar binnen:
BuitensteObject.BinnensteObject.VerBinnenObject.EenNaam
Deze namen kunnen ook worden beschreven als "samengevoegd met de operator punt ('.')".
Het alternatief With
De door haakjes omsloten argumenten With...End With verschaffen een alternatief voor het, elke keer, uitschrijven van alle kwalificaties – en sommige van de kwalificaties in de API kunnen vrij lang zijn. U specificeert de kwalificaties in het argument With. Totdat BASIC het argument End With tegen komt, zoekt het naar gedeeltelijk-gekwalificeerde namen: namen die beginnen met een punt (unaire operator punt). De compiler gebruikt de kwalificaties uit de With alsof zij werden geschreven vóór de gedeeltelijk gekwalificeerde namen.
Voorbeeld 1: Een gebruikergedefinieerde Struct
Dit voorbeeld geeft weer hoe u een struct kunt definiëren en gebruiken, en hoe naar de items erin te verwijzen, zowel met als zonder With. In beide gevallen moeten de namen van de gegevensvelden (uit de definitie Type) worden gekwalificeerd door de naam van de instantie (uit het argument Dim).
Type aMenuItem aCommand as String aText as String End Type Sub Main 'Maak een instantie van de gebruikergedefinieerde struct. ' Onthoud het sleutelwoord: "New". Dim maItem as New aMenuItem With maItem .aCommand = ".uno:Copy" .aText = "~Kopiëren" End With MsgBox "Opdracht: " & maItem.aCommand & Chr(13) _ & "Tekst: " & maItem.aText End Sub
Voorbeeld 2: argument Case
In Cellen en bereiken zijn in het volgende voorbeeld de kwalificaties in de argumenten Case, voor de duidelijkheid, volledig uitgeschreven. U kunt het, op deze manier, eenvoudiger schrijven:
Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = ThisComponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(1,1) 'Cel "B2" (gebaseerd op 0!) Cell.Value = 1000 With com.sun.star.table.CellContentType Select Case Cell.Type Case .EMPTY MsgBox "Inhoud: Leeg" Case .VALUE MsgBox "Inhoud: Waarde" Case .TEXT MsgBox "Inhoud: Tekst" Case .FORMULA MsgBox "Inhoud: Formule" End Select End With
Merk op dat de constructie With geheel buiten de constructie Select moet staan.
Content on this page is licensed under the Public Documentation License (PDL). |