Munka az űrlapokkal
Az Apache OpenOffice űrlapjai tartalmazhatnak szövegmezőket, listapaneleket, választógombokat és számos egyéb vezérlőelemet, amelyeket közvetlenül a szövegbe vagy a munkafüzetbe lehet beszúrni. Az Űrlapelemek eszköztár használatával szerkeszthetők az űrlapok.
Egy Apache OpenOffice-űrlap a két mód egyikét használhatja: a vázlatmódot vagy a megjelenítési módot. Vázlatmódban a vezérlőelemek helyzete módosítható, és tulajdonságaik szerkeszthetők a tulajdonságablak használatával.
Az Űrlapelemek eszköztár használatával is lehet váltani a két mód között.
Objektuműrlapok meghatározása
Az Apache OpenOffice a rajzobjektum-szinten helyezi el az űrlap vezérlőelemeit. A tényleges űrlapobjektum a Forms listán keresztül érhető el, a rajzolási szinten. Az objektumokat a következő módon lehet elérni a szöveges dokumentumokban:
Dim Doc As Object
Dim DrawPage As Object
Dim Form As Object
Doc = StarDesktop.CurrentComponent
DrawPage = Doc.DrawPage
Form = DrawPage.Forms.GetByIndex(0)
A GetByIndex metódus visszaadja a 0-s indexszel rendelkező űrlapot.
Ha munkafüzetekkel dolgozunk, egy közbenső lépésre van szükség (a Sheets listára), mert a rajzolási szintek nem közvetlenül a dokumentumban helyezkednek el, hanem az egyes munkalapokban:
Dim Doc As Object
Dim Sheet As Object
Dim DrawPage As Object
Dim Form As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.GetByIndex(0)
DrawPage = Sheet.DrawPage
Form = DrawPage.Forms.GetByIndex(0)
Ahogy a GetByIndex metódus neve is jelzi, a dokumentum több űrlapot is tartalmazhat. Ez például akkor hasznos, ha több adatbázis tartalma is megjelenik egyetlen dokumentumban, vagy ha egy 1:n típusú adatbázis-kapcsolat van megjelenítve az űrlapon. Ebből a célból rendelkezésre áll az alűrlapok létrehozásának lehetősége is.
Az űrlap vezérlőelemeinek három nézőpontja
Az űrlap vezérlőelemeinek három nézőpontja van:
- A vezérlőelem Modellje a kulcsobjektum az Apache OpenOffice Basic-programozó számára, amikor űrlap-vezérlőelemekkel dolgozik.
- Ennek ellentettje a vezérlőelem Nézete, amely a megjelenítési információkat kezeli.
- Mivel a program speciális rajzelemként kezeli a dokumentumok űrlap-vezérlőelemeit, létezik egy Alakzatobjektum is, amely a vezérlőelem rajzelem-specifikus tulajdonságait tartalmazza (gyakorlatilag a helyét és méretét).
Az űrlap-vezérlőelemek modelljének elérése
Az űrlap-vezérlőelemek modellje az űrlapobjektum GetByName metódusán keresztül érhető el.
Dim Doc As Object
Dim Form As Object
Dim Ctl As Object
Doc = StarDesktop.CurrentComponent
Form = Doc.DrawPage.Forms.GetByIndex(0)
Ctl = Form.getByName("SajátLista")
Ez a példa meghatározza a jelenleg megnyitott szöveges dokumentum első űrlapjában található SajátLista vezérlőelem modelljét.
Ha nem vagyunk benne biztosak, melyik űrlap tartalmazza a vezérlőelemet, akkor a kívánt vezérlőelemet megkereshetjük az űrlapokban:
Dim Doc As Object
Dim Forms As Object
Dim Form As Object
Dim Ctl As Object
Dim I as Integer
Doc = StarDesktop.CurrentComponent
Forms = Doc.Drawpage.Forms
For I = 0 To Forms.Count - 1
Form = Forms.GetbyIndex(I)
If Form.HasByName("SajátLista") Then
Ctl = Form.GetbyName("SajátLista")
Exit Function
End If
Next I
Ez a példa a HasByName metódussal végignézi a szöveges dokumentum összes űrlapját, hogy tartalmaz-e egy SajátLista nevű vezérlőelemet. Ha az adott modell megtalálható, akkor a program menti az erre mutató hivatkozást a Ctl változóba, és a keresés befejeződik.
Az űrlap-vezérlőelemek nézetének elérése
Az űrlap-vezérlőelem nézetének eléréséhez először meg kell határozni a vezérlőelem modelljét. A vezérlőelem modellje ezután meghatározható a modell segítségével és a dokumentumvezérlő használatával.
Dim Doc As Object
Dim DocCrl As Object
Dim Forms As Object
Dim Form As Object
Dim Ctl As Object
Dim CtlView As Object
Dim I as Integer
Doc = StarDesktop.CurrentComponent
DocCrl = Doc.getCurrentControler()
Forms = Doc.Drawpage.Forms
For I = 0 To Forms.Count - 1
Form = Forms.GetbyIndex(I)
If Form.HasByName("SajátLista") Then
Ctl = Form.GetbyName("SajátLista")
CtlView = DocCrl.GetControl(Ctl)
Exit Function
End If
Next I
A példában látható kód sokban hasonlít az előző példa kódjához, például a vezérlőelem modelljének meghatározásában. Nem csak a Doc dokumentumobjektumot használja, hanem a DocCrl dokumentumvezérlő-objektumot, amely egy hivatkozás az aktuális dokumentumablakra. Ezzel a vezérlőobjektummal és a vezérlőelem modelljével a program a GetControl metódus használatával meghatározza a vezérlőelem nézetét (CtlView változó).
Az űrlap-vezérlőelemek alakzatobjektumának elérése
Az űrlap-vezérlőelemek alakzatobjektumának eléréséhez használt metódus szintén a dokumentum rajzolási szintjét használja. Egy adott vezérlőelem maghatározásához a rajzolási szint összes rajzelemét át kell nézni.
Dim Doc As Object
Dim Shape as Object
Dim I as integer
Doc = StarDesktop.CurrentComponent
For i = 0 to Doc.DrawPage.Count - 1
Shape = Doc.DrawPage(i)
If HasUnoInterfaces(Shape, "com.sun.star.drawing.XControlShape") Then
If Shape.Control.Name = "SajátLista" Then
Exit Function
End If
End If
Next
Ez a példaprogram végignézi az összes rajzelemet, és ellenőrzi, hogy azok támogatják-e az űrlap-vezérlőelemekhez szükséges com.sun.star.drawing.XControlShape felületet. Amennyiben igen, a Control.Name tulajdonsággal ellenőrzi, hogy a vezérlőelem neve SajátLista-e. Ha így van, akkor a keresés befejeződik.
Vezérlőelemek méretének és helyének meghatározása
Mint ahogy azt olvashattuk, a vezérlőelemek mérete és helye megállapítható a hozzájuk tartozó alakzatobjektummal. A vezérlőelem alakzatobjektuma, akárcsak az összes többi alakzatobjektum, rendelkezik egy Size és egy Position tulajdonsággal ehhez:
- Size (struktúra)
- a vezérlőelem mérete (com.sun.star.awt.Size adatstruktúra).
- Position (struktúra)
- a vezérlőelem helye (com.sun.star.awt.Point adatstruktúra).
A következő példa bemutatja, hogyan állítható be egy vezérlőelem helye és mérete az alakzatobjektum használatával:
Dim Shape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
' ... Shape objektum inicializálása a korábbi módon ...
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Shape.Size = Size
Shape.Position = Point
Ahhoz, hogy működjön a kód, a vezérlőelem alakzatobjektumának már ismertnek kell lennie. Ha nem így lenne, akkor azt be kell állítani az előző példában látható kóddal.
| Content on this page is licensed under the Public Documentation License (PDL). |