Egyéb utasítások

From Apache OpenOffice Wiki
Jump to: navigation, search
Book.png

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).
Personal tools