Did you know that the OpenOffice.org Wiki has a WYSIWYG editor? See Help:FCKeditor
Munka az űrlapokkal
From OpenOffice.org Wiki
- Munka az űrlapokkal
- Űrlap-vezérlőelemek
- Adatbázisűrlapok
Az OpenOffice.org ű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 OpenOffice.org-ű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 OpenOffice.org 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 OpenOffice.org 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). |

