Munka az űrlapokkal
- Munka az űrlapokkal
- Űrlap-vezérlőelemek
- Adatbázisűrlapok
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). |