Difference between revisions of "NL/Documentation/BASIC Guide/Working With Forms"

From Apache OpenOffice Wiki
Jump to: navigation, search
 
(4 intermediate revisions by the same user not shown)
Line 8: Line 8:
 
{{DISPLAYTITLE:Werken met formulieren}}
 
{{DISPLAYTITLE:Werken met formulieren}}
 
__NOTOC__  
 
__NOTOC__  
{{OOo}} formulieren mogen tekstvelden, keuzelijsten, radioknoppen en een scala aan andere besturingselementen bevatten, welke direct worden ingevoegd in een tekst- of werkbladdocument. De werkbalk Besturingselementen wordt gebruikt voor het bewerken van formulieren.
+
{{AOo}} formulieren mogen tekstvelden, keuzelijsten, radioknoppen en een scala aan andere besturingselementen bevatten, welke direct worden ingevoegd in een tekst- of werkbladdocument. De werkbalk Besturingselementen wordt gebruikt voor het bewerken van formulieren.
  
Een formulier in {{OOo}}kan één van twee modi aannemen: de ontwerp-modus en de weergave- modus. In ontwerpmodus kan de positie van besturingselementen worden gewijzigd en hun eigenschappen kunnen worden bewerkt met behulp van een venster voor eigenschappen.
+
Een formulier in {{AOo}}kan één van twee modi aannemen: de ontwerpmodus en de weergavemodus. In ontwerpmodus kan de positie van besturingselementen worden gewijzigd en hun eigenschappen kunnen worden bewerkt met behulp van een venster voor eigenschappen.
  
 
De werkbalk Besturingselementen wordt ook gebruikt voor het schakelen tussen die modi.
 
De werkbalk Besturingselementen wordt ook gebruikt voor het schakelen tussen die modi.
Line 16: Line 16:
 
== Bepalen van object Formulieren ==
 
== Bepalen van object Formulieren ==
  
{{OOo}} plaatst de besturingselementen van een formulier op het niveau van een object van een tekening. Het actuele object formulier kan worden benaderd via de lijst Forms op niveau van het object tekening. De objecten worden als volgt benaderd in tekstdocumenten:
+
{{AOo}} plaatst de besturingselementen van een formulier op het niveau van een object van een tekening. Het actuele object formulier kan worden benaderd via de lijst Forms op niveau van het object tekening. De objecten worden als volgt benaderd in tekstdocumenten:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
 
Dim DrawPage As Object
 
Dim DrawPage As Object
Line 26: Line 26:
 
DrawPage = Doc.DrawPage
 
DrawPage = Doc.DrawPage
 
Formulier = DrawPage.Forms.GetByIndex(0)
 
Formulier = DrawPage.Forms.GetByIndex(0)
</source>
+
</syntaxhighlight>
  
 
De methode <tt>GetByIndex</tt> geeft het formulier weer met het index-getal 0.
 
De methode <tt>GetByIndex</tt> geeft het formulier weer met het index-getal 0.
  
Bij het werken met werkbladdocumenten is een tussenstation nodig, de lijst Sheets, omdat de niveau's voor de tekeningen niet direct in het document zijn gelegen, maar in de individuele werkbladen:
+
Bij het werken met werkbladdocumenten is een tussenstation nodig, de lijst Sheets, omdat de niveaus voor de tekeningen niet direct in het document zijn gelegen, maar in de individuele werkbladen:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
 
Dim Blad As Object
 
Dim Blad As Object
Line 42: Line 42:
 
DrawPage = Blad.DrawPage
 
DrawPage = Blad.DrawPage
 
Formulier = DrawPage.Forms.GetByIndex(0)
 
Formulier = DrawPage.Forms.GetByIndex(0)
</source>
+
</syntaxhighlight>
  
 
Zoals al werd gesuggereerd door de methodenaam <tt>GetByIndex</tt> kan een document verschillende formulieren bevatten. Dit is bijvoorbeeld handig als de inhoud van verschillende gegevensbronnen worden weergegeven binnen één document, of als een relatie van een gegevensbron wordt weergegeven binnen een formulier. De optie voor het maken van sub-formulieren wordt mede voor dit doel verschaft.
 
Zoals al werd gesuggereerd door de methodenaam <tt>GetByIndex</tt> kan een document verschillende formulieren bevatten. Dit is bijvoorbeeld handig als de inhoud van verschillende gegevensbronnen worden weergegeven binnen één document, of als een relatie van een gegevensbron wordt weergegeven binnen een formulier. De optie voor het maken van sub-formulieren wordt mede voor dit doel verschaft.
Line 50: Line 50:
 
Een besturingselement van een formulier heeft drie aspecten:
 
Een besturingselement van een formulier heeft drie aspecten:
  
* Het '''Model''' van het besturingselement is het sleutel-object voor de programmeur in {{OOo}} BASIC bij het werken met besturingselementen voor formulieren.
+
* Het '''Model''' van het besturingselement is het sleutel-object voor de programmeur in {{AOo}} BASIC bij het werken met besturingselementen voor formulieren.
 
* Het tegengestelde hiervan is de '''View''' van het besturingselement, dat de informatie voor de weergave beheert.
 
* Het tegengestelde hiervan is de '''View''' van het besturingselement, dat de informatie voor de weergave beheert.
 
* Omdat besturingselement formulieren binnen de documenten worden beheerd als een speciaal tekenelement, is er ook een '''object Shape''' dat de tekenelement-specifieke eigenschappen van het besturingselement weergeeft (in het bijzonder zijn positie en grootte).
 
* Omdat besturingselement formulieren binnen de documenten worden beheerd als een speciaal tekenelement, is er ook een '''object Shape''' dat de tekenelement-specifieke eigenschappen van het besturingselement weergeeft (in het bijzonder zijn positie en grootte).
  
== Accessing the Model of Control Element Forms ==
+
== Toegang tot het Model van besturingselement Formulieren ==
  
The models of the control elements of a form are available through the <tt>GetByName</tt> method of the Object form:
+
De modellen van de besturingselementen van een formulier zijn beschikbaar via de methode <tt>GetByName</tt> van het object Form:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
 
Dim Form As Object
 
Dim Form As Object
Line 65: Line 65:
 
Doc = ThisComponent
 
Doc = ThisComponent
 
Form = Doc.DrawPage.Forms.GetByIndex(0)
 
Form = Doc.DrawPage.Forms.GetByIndex(0)
Ctl = Form.getByName("MyListBox")
+
Ctl = Form.getByName("MijnKeuzelijst")
</source>
+
</syntaxhighlight>
  
The example determines the model of the <tt>MyListBox</tt> control element, which is located in the first form of the text document currently open.
+
Het voorbeeld bepaalt het model van het besturingselement <tt>MijnKeuzelijst</tt>, dat is gelegen in het eerste formulier van het huidige geopende tekstdocument.
  
If you are not sure of the form of a control element, you can use the option for searching through all forms for the control element required.
+
Als u niet zeker bent van de vorm van een besturingselement, kunt u de optie voor het zoeken door alle vormen voor het vereiste besturingselement gebruiken:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
 
Dim Forms As Object
 
Dim Forms As Object
Line 84: Line 84:
 
For I = 0 To Forms.Count - 1
 
For I = 0 To Forms.Count - 1
 
   Form = Forms.GetbyIndex(I)
 
   Form = Forms.GetbyIndex(I)
   If Form.HasByName("MyListBox") Then
+
   If Form.HasByName("MijnKeuzelijst") Then
     Ctl = Form.GetbyName("MyListBox")
+
     Ctl = Form.GetbyName("MijnKeuzelijst")
 
     Exit Function
 
     Exit Function
 
   End If
 
   End If
 
Next I
 
Next I
</source>
+
</syntaxhighlight>
  
The example uses the <tt>HasByName</tt> method to check all forms of a text document to determine whether they contain a control element model called <tt>MyListBox</tt>. If a corresponding model is found, then a reference to this is saved in the <tt>Ctl</tt> variable and the search is terminated. The example is shown as in-line code, for clarity; in practice, the search would be inside a function, called with the name as a string parameter, and include error processing.
+
Het voorbeeld gebruikt de methode <tt>HasByName</tt> om alle formulieren van een tekstdocument te controleren of zij al dan niet een model van een besturingselement, genaamd <tt>MijnKeuzelijst</tt>, bevatten. Als een overeenkomend model wordt gevonden, dan wordt een verwijzing daarnaar bewaard in de variabele <tt>Ctl</tt> en wordt de zoekbewerking beëindigd. Het voorbeeld wordt weergegeven met in-regelige code, voor de duidelijkheid; in de praktijk zoude zoekactie binnen een functie staan, aangeroepen met de naam als een parameter string en inclusief foutafhandeling.
  
== Accessing the View of Control Element Forms ==
+
== Toegang tot de View van besturingselement Formulieren ==
  
To access the view of a control element form, you need the associated model. The view of the control element can then be determined with the assistance of the model and using the document controller.
+
Eerst is het geassocieerde model nodig om de weergave van een besturingselement vorm te benaderen. De weergave van het besturingselement kan dan worden bepaald met de hulp van het model en met gebruik van de controller van het document.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
 
Dim DocCrl As Object
 
Dim DocCrl As Object
Line 112: Line 112:
 
For I = 0 To Forms.Count - 1
 
For I = 0 To Forms.Count - 1
 
   Form = Forms.GetbyIndex(I)
 
   Form = Forms.GetbyIndex(I)
   If Form.HasByName("MyListBox") Then
+
   If Form.HasByName("MijnKeuzelijst") Then
     Ctl = Form.GetbyName("MyListBox")
+
     Ctl = Form.GetbyName("MijnKeuzelijst")
 
     CtlView = DocCrl.GetControl(Ctl)
 
     CtlView = DocCrl.GetControl(Ctl)
 
     Exit Function
 
     Exit Function
 
   End If
 
   End If
 
Next I
 
Next I
</source>
+
</syntaxhighlight>
  
The code listed in the example is very similar to the code listed in the previous example for determining a control element model. It uses not only the <tt>Doc</tt> document object but also the <tt>DocCrl</tt> document controller object which makes reference to the current document window. With the help of this controller object and the model of the control element, it then uses the <tt>GetControl</tt> method to determine the view (<tt>CtlView</tt> variable) of the control element form.
+
De vermelde code in het voorbeeld lijkt erg veel op de code die is vermeld in het voorgaande voorbeeld voor het bepalen van het model van het besturingselement. Het gebruikt niet alleen het documentobject <tt>Doc</tt> maar ook het object document-controller <tt>DocCrl</tt> die een verwijzing maakt naar het huidige venster van het document. Met de hulp van dit controller-object en het model van het besturingselement gebruikt het dan de methode <tt>GetControl</tt> om de weergave (variabele <tt>CtlView</tt>) van het besturingselement van het formulier te bepalen.
  
== Accessing the Shape Object of Control Element Forms ==
+
== Toegang tot het object Shape van besturingselement Formulieren ==
  
The method for accessing the shape objects of a control element also uses the corresponding drawing level of the document. To determine a special control element, all drawing elements of the drawing level must be searched through.
+
De methode voor toegang tot de vormobjecten van een besturingselement gebruikt ook het corresponderende niveau van de tekening van het document. Om een bepaald besturingselement vast te stellen, moeten alle tekenelementen van het niveau van de tekening worden doorzocht.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
 
Dim Shape as Object
 
Dim Shape as Object
Line 136: Line 136:
 
   Shape = Doc.DrawPage(i)
 
   Shape = Doc.DrawPage(i)
 
   If HasUnoInterfaces(Shape, "com.sun.star.drawing.XControlShape") Then
 
   If HasUnoInterfaces(Shape, "com.sun.star.drawing.XControlShape") Then
     If Shape.Control.Name = "MyListBox" Then
+
     If Shape.Control.Name = "MijnKeuzelijst" Then
 
       Exit Function
 
       Exit Function
 
     End If
 
     End If
 
   End If
 
   End If
 
Next
 
Next
</source>
+
</syntaxhighlight>
  
The example checks all drawing elements to determine whether they support the <idl>com.sun.star.drawing.XControlShape</idl> interface needed for control element forms. If this is the case, the <tt>Control.Name</tt> property then checks whether the name of the control element is <tt>MyListBox</tt>. If this is true, the function ends the search.
+
Het voorbeeld controleert alle tekenelementen om vast te stellen of zij de interface <idl>com.sun.star.drawing.XControlShape</idl> ondersteunen, benodigd voor vormen van besturingselementen. Als dat het geval is, controleert de eigenschap <tt>Control.Name</tt> of de naam van het besturingselement <tt>MynKeuzeLijst</tt> is. Als dat zo is, beëindigt de functie de zoekbewerking.
  
=== Determining the Size and Position of Control Elements ===
+
=== Bepalen van de grootte en positie van besturingselementen ===
  
As already mentioned, the size and position of control elements can be determined using the associated <tt>shape</tt> object. The control element shape, like all other <tt>shape</tt> objects, provides the <tt>Size</tt> and <tt>Position</tt> properties for this purpose:
+
Zoals reeds vermeld kan de grootte en positie van besturingselementen worden bepaald met behulp van het geassocieerde object <tt>shape</tt>. Het besturingselement shape, net zoals alle andere objecten <tt>shape</tt>, verschaft de eigenschappen <tt>Size</tt> en <tt>Position</tt> voor dit doel:
  
;<tt>Size (struct)</tt>:size of control element (<idl>com.sun.star.awt.Size</idl> data structure)
+
;<tt>Size (struct)</tt>:grootte van besturingselement (gegevensstructuur <idl>com.sun.star.awt.Size</idl>)
;<tt>Position (struct)</tt>:position of control element (<idl>com.sun.star.awt.Point</idl> data structure)
+
;<tt>Position (struct)</tt>:positie van besturingselement (gegevensstructuur <idl>com.sun.star.awt.Point</idl>)
  
The following example shows how the position and size of a control element can be set using the associated shape object:
+
Het volgende voorbeeld toont doe de positie en grootte van een besturingselement kan worden ingesteld met behulp van het geassocieerde object Vorm:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
Dim Shape As Object
+
Dim Vorm As Object
Dim Point As New com.sun.star.awt.Point
+
Dim Punt As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
+
Dim Grootte As New com.sun.star.awt.Size
  
' ... Initialize Shape object, as previously shown ...
+
' ... Initialiseren van object Vorm, zoals eerder weergegeven ...
  
Point.x = 1000
+
Punt.x = 1000
Point.y = 1000
+
Punt.y = 1000
Size.Width = 10000
+
Grootte.Width = 10000
Size.Height = 10000
+
Grootte.Height = 10000
  
Shape.Size = Size
+
Vorm.Size = Grootte
Shape.Position = Point
+
Vorm.Position = Punt
</source>
+
</syntaxhighlight>
  
The <tt>shape</tt> object of the control element must already be known if the code is to function. If this is not the case, it must be determined using the preceding code.
+
Het object <tt>Vorm</tt> van het besturingselement moet reeds bekend zijn als de code wil werken. Als dat niet het geval is, moet die worden vastgesteld met behulp van de eerder vermelde code.
  
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Working With Forms}}
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Working With Forms}}
 
{{PDL1}}
 
{{PDL1}}

Latest revision as of 15:45, 10 February 2021

Book.png


Apache OpenOffice formulieren mogen tekstvelden, keuzelijsten, radioknoppen en een scala aan andere besturingselementen bevatten, welke direct worden ingevoegd in een tekst- of werkbladdocument. De werkbalk Besturingselementen wordt gebruikt voor het bewerken van formulieren.

Een formulier in Apache OpenOfficekan één van twee modi aannemen: de ontwerpmodus en de weergavemodus. In ontwerpmodus kan de positie van besturingselementen worden gewijzigd en hun eigenschappen kunnen worden bewerkt met behulp van een venster voor eigenschappen.

De werkbalk Besturingselementen wordt ook gebruikt voor het schakelen tussen die modi.

Bepalen van object Formulieren

Apache OpenOffice plaatst de besturingselementen van een formulier op het niveau van een object van een tekening. Het actuele object formulier kan worden benaderd via de lijst Forms op niveau van het object tekening. De objecten worden als volgt benaderd in tekstdocumenten:

Dim Doc As Object
Dim DrawPage As Object
Dim Formulier As Object
 
Doc = ThisComponent
DrawPage = Doc.DrawPage
Formulier = DrawPage.Forms.GetByIndex(0)

De methode GetByIndex geeft het formulier weer met het index-getal 0.

Bij het werken met werkbladdocumenten is een tussenstation nodig, de lijst Sheets, omdat de niveaus voor de tekeningen niet direct in het document zijn gelegen, maar in de individuele werkbladen:

Dim Doc As Object
Dim Blad As Object
Dim DrawPage As Object
Dim Formulier As Object
 
Doc = ThisComponent
Blad = Doc.Sheets.GetByIndex(0)
DrawPage = Blad.DrawPage
Formulier = DrawPage.Forms.GetByIndex(0)

Zoals al werd gesuggereerd door de methodenaam GetByIndex kan een document verschillende formulieren bevatten. Dit is bijvoorbeeld handig als de inhoud van verschillende gegevensbronnen worden weergegeven binnen één document, of als een relatie van een gegevensbron wordt weergegeven binnen een formulier. De optie voor het maken van sub-formulieren wordt mede voor dit doel verschaft.

De drie aspecten van een besturingselement van een formulier

Een besturingselement van een formulier heeft drie aspecten:

  • Het Model van het besturingselement is het sleutel-object voor de programmeur in Apache OpenOffice BASIC bij het werken met besturingselementen voor formulieren.
  • Het tegengestelde hiervan is de View van het besturingselement, dat de informatie voor de weergave beheert.
  • Omdat besturingselement formulieren binnen de documenten worden beheerd als een speciaal tekenelement, is er ook een object Shape dat de tekenelement-specifieke eigenschappen van het besturingselement weergeeft (in het bijzonder zijn positie en grootte).

Toegang tot het Model van besturingselement Formulieren

De modellen van de besturingselementen van een formulier zijn beschikbaar via de methode GetByName van het object Form:

Dim Doc As Object
Dim Form As Object
Dim Ctl As Object
 
Doc = ThisComponent
Form = Doc.DrawPage.Forms.GetByIndex(0)
Ctl = Form.getByName("MijnKeuzelijst")

Het voorbeeld bepaalt het model van het besturingselement MijnKeuzelijst, dat is gelegen in het eerste formulier van het huidige geopende tekstdocument.

Als u niet zeker bent van de vorm van een besturingselement, kunt u de optie voor het zoeken door alle vormen voor het vereiste besturingselement gebruiken:

Dim Doc As Object
Dim Forms As Object
Dim Form As Object
Dim Ctl As Object
Dim I as Integer
 
Doc = ThisComponent
Forms = Doc.Drawpage.Forms
 
For I = 0 To Forms.Count - 1
  Form = Forms.GetbyIndex(I)
  If Form.HasByName("MijnKeuzelijst") Then
    Ctl = Form.GetbyName("MijnKeuzelijst")
    Exit Function
  End If
Next I

Het voorbeeld gebruikt de methode HasByName om alle formulieren van een tekstdocument te controleren of zij al dan niet een model van een besturingselement, genaamd MijnKeuzelijst, bevatten. Als een overeenkomend model wordt gevonden, dan wordt een verwijzing daarnaar bewaard in de variabele Ctl en wordt de zoekbewerking beëindigd. Het voorbeeld wordt weergegeven met in-regelige code, voor de duidelijkheid; in de praktijk zoude zoekactie binnen een functie staan, aangeroepen met de naam als een parameter string en inclusief foutafhandeling.

Toegang tot de View van besturingselement Formulieren

Eerst is het geassocieerde model nodig om de weergave van een besturingselement vorm te benaderen. De weergave van het besturingselement kan dan worden bepaald met de hulp van het model en met gebruik van de controller van het document.

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 = ThisComponent
DocCrl = Doc.getCurrentController()
Forms = Doc.Drawpage.Forms
 
For I = 0 To Forms.Count - 1
  Form = Forms.GetbyIndex(I)
  If Form.HasByName("MijnKeuzelijst") Then
    Ctl = Form.GetbyName("MijnKeuzelijst")
    CtlView = DocCrl.GetControl(Ctl)
    Exit Function
  End If
Next I

De vermelde code in het voorbeeld lijkt erg veel op de code die is vermeld in het voorgaande voorbeeld voor het bepalen van het model van het besturingselement. Het gebruikt niet alleen het documentobject Doc maar ook het object document-controller DocCrl die een verwijzing maakt naar het huidige venster van het document. Met de hulp van dit controller-object en het model van het besturingselement gebruikt het dan de methode GetControl om de weergave (variabele CtlView) van het besturingselement van het formulier te bepalen.

Toegang tot het object Shape van besturingselement Formulieren

De methode voor toegang tot de vormobjecten van een besturingselement gebruikt ook het corresponderende niveau van de tekening van het document. Om een bepaald besturingselement vast te stellen, moeten alle tekenelementen van het niveau van de tekening worden doorzocht.

Dim Doc As Object
Dim Shape as Object
Dim I as integer
 
Doc = ThisComponent
 
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 = "MijnKeuzelijst" Then
      Exit Function
    End If
  End If
Next

Het voorbeeld controleert alle tekenelementen om vast te stellen of zij de interface com.sun.star.drawing.XControlShape ondersteunen, benodigd voor vormen van besturingselementen. Als dat het geval is, controleert de eigenschap Control.Name of de naam van het besturingselement MynKeuzeLijst is. Als dat zo is, beëindigt de functie de zoekbewerking.

Bepalen van de grootte en positie van besturingselementen

Zoals reeds vermeld kan de grootte en positie van besturingselementen worden bepaald met behulp van het geassocieerde object shape. Het besturingselement shape, net zoals alle andere objecten shape, verschaft de eigenschappen Size en Position voor dit doel:

Size (struct)
grootte van besturingselement (gegevensstructuur com.sun.star.awt.Size)
Position (struct)
positie van besturingselement (gegevensstructuur com.sun.star.awt.Point)

Het volgende voorbeeld toont doe de positie en grootte van een besturingselement kan worden ingesteld met behulp van het geassocieerde object Vorm:

Dim Vorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
 
' ... Initialiseren van object Vorm, zoals eerder weergegeven ...
 
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
 
Vorm.Size = Grootte
Vorm.Position = Punt

Het object Vorm van het besturingselement moet reeds bekend zijn als de code wil werken. Als dat niet het geval is, moet die worden vastgesteld met behulp van de eerder vermelde code.


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools