Egyéb utasítások
Type...End Type
A „struktúra” adatmezők összessége, amelyek egyetlen elemként kezelhetők. Régebbi szóhasználattal a struktúra egy rekordnak vagy egy rekord részének nevezhető.
Az API gyakran használ előre definiált struktúrákat, de ezek „UNO-struktúrák”, a struktúrák egy nagyon speciális fajtája.
Definíció
A Type...End Type utasításokkal létrehozhatjuk a saját (nem UNO) struktúráinkat:
Type aMenuItem 'név adása a típusnak 'Adatmezők definiálása a struktúrán belül Minden ' definíció úgy néz ki, mint egy Dim utasítás, de nincs odaírva a „Dim” aCommand as String aText as String End Type ' definíciós blokk vége
Példány
A Type definíció csak egy minta vagy egy sablon, nem tényleges változók halmaza. Ha a típus egy „példányát” kívánjuk létrehozni, amelyben tényleges változók értéke tárolható, használjuk a Dim as New utasítást:
Dim maItem as New aMenuItem
Hatáskör
Ahogy a következő példában látszik, a Type definíció írható a modul elejére (az első Sub vagy Function elé). A definíció ezáltal a modul minden rutinja számára elérhető lesz.
Az OpenOffice.org 3.0-s verziójától kezdve a változókkal ellentétben nincs arra lehetőség, hogy a definíciót a modulon kívül elérhetővé tegyük.
Az új típus egy példány maga is egy változó, és a változók hatáskörének szabályai vonatkoznak rá (lásd:Változók hatásköre és élettartama).
Egy példa a definíció használatára és egy példányban a mezőkre való hivatkozásra a With...End With szakaszban található.
With...End With
Minősítők
Általában a Basic nem néz bele egy tárolóba, például egy Object-be, hogy megnézze, hogy milyen nevek lehetnek ott definiálva. Ha egy ilyen nevet szeretnénk használni, meg kell mondanunk a Basicnek, hogy merre találja. Ezt az objektum nevének „minősítőként” való használatával érhetjük el. Írjuk a belső név elé, és ponttal válasszuk el tőle.
SajatObjektum.ValamiNev
Mivel a tárolók más tárolókat is tartalmazhatnak, egynél több minősítő megadására is szükség lehet. Írjuk sorrendbe a minősítőket, kívülről befelé haladva:
KulsoObjektum.BelsoObjektum.LegbelsoObjektum.ValamiNev
Ezekről a nevekről úgy is beszélhetünk, hogy a „pont ('.') operátorral vannak összefűzve”.
A With alternatíva
A With...End With közé zárt utasítások egy alternatív lehetőséget biztosítanak a minősítők teljes kiírása helyett. Az API egyes minősítői meglehetősen hosszúak lehetnek. A minősítőket a With utasításban adjuk meg. Amíg a Basic nem találkozik az End With utasítással, „részben minősített” neveket keres. Az ilyen nevek ponttal kezdődnek (unáris pont operátor). Az értelmező a With utasításban megadott minősítőket használja, mintha azok a részben minősített nevek elé lennének írva.
1. példa: Felhasználó által definiált struktúra
Ez a példa bemutatja, hogy hogyan definiáljunk és használjunk egy struktúrát, és hogyan hivatkozzunk az elemeire a With utasítással és anélkül. Mindkét esetben az adatmezők nevei (a Type definícióból) elé kell írni a példány nevét (a Dim utasításból).
Type aMenuItem aCommand as String aText as String End Type Sub Main 'A felhasználó által definiált struktúra egy példányának létrehozása ' Jegyezzük meg, hogy a "New" kulcsszót kell használni. Dim maItem as New aMenuItem With maItem .aCommand = ".uno:Copy" .aText = "~Másolás" End With MsgBox "Parancs: " & maItem.aCommand & Chr(13) _ & "Szöveg: " & maItem.aText End Sub
2. példa: Case utasítás
A Cellák és tartományok fejezetben, a Case utasításra vonatkozó példában a minősítők teljesen ki vannak írva az érthetőség kedvéért.. Ez egyszerűbben is írható a következőképpen:
Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = StarDesktop.CurrentComponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(1,1) 'A "B2" cella (0-alapú!) Cell.Value = 1000 With com.sun.star.table.CellContentType Select Case Cell.Type Case .EMPTY MsgBox "Tartalom: Üres" Case .VALUE MsgBox "Tartalom: Érték" Case .TEXT MsgBox "Tartalom: Szöveg" Case .FORMULA MsgBox "Tartalom: Képlet" End Select End With
Vegyük észre, hogy a With szerkezet teljesen a Select szerkezeten kívül van.
Content on this page is licensed under the Public Documentation License (PDL). |