Difference between revisions of "NL/Documentation/BASIC Guide/More Than Text"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Columns)
(Tabellen)
(19 intermediate revisions by 2 users not shown)
Line 28: Line 28:
 
Het volgende voorbeeld maakt een tabel met behulp van de methode createInstance,  zoals eerder beschreven.
 
Het volgende voorbeeld maakt een tabel met behulp van de methode createInstance,  zoals eerder beschreven.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
 
Dim Tabel As Object
 
Dim Tabel As Object
Line 40: Line 40:
  
 
Doc.Text.insertTextContent(Cursor, Tabel, False)
 
Doc.Text.insertTextContent(Cursor, Tabel, False)
</source>
+
</syntaxhighlight>
  
 
Indien gemaakt wordt de tabel ingesteld tot het benodigde aantal rijen en kolommen met behulp van een aanroep <tt>initialize</tt> en dan ingevoegd in het tekstdocument met behulp van <tt>insertTextContent</tt>.
 
Indien gemaakt wordt de tabel ingesteld tot het benodigde aantal rijen en kolommen met behulp van een aanroep <tt>initialize</tt> en dan ingevoegd in het tekstdocument met behulp van <tt>insertTextContent</tt>.
Line 53: Line 53:
 
De ingevoegde tabel in een tekstdocument kan worden vastgesteld met behulp van een eenvoudige lus. De methode van <tt>getTextTables()</tt> van het tekstdocumentobject wordt voor dit doel gebruikt:
 
De ingevoegde tabel in een tekstdocument kan worden vastgesteld met behulp van een eenvoudige lus. De methode van <tt>getTextTables()</tt> van het tekstdocumentobject wordt voor dit doel gebruikt:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
 
Dim TekstTabellen As Object
 
Dim TekstTabellen As Object
Line 66: Line 66:
  
 
Next I
 
Next I
</source>
+
</syntaxhighlight>
  
{{Documentation/Note|Teksttabellen zijn in {{OOo}} beschikbaar via de lijst <tt>TextTables</tt> van het documentobject. Het voorgaande voorbeeld toont hoe een teksttabel kan worden gemaakt. De opties voor toegang tot de teksttabellen worden beschreven in het volgende gedeelte.}}
+
{{Note|Teksttabellen zijn in {{OOo}} beschikbaar via de lijst <tt>TextTables</tt> van het documentobject. Het voorgaande voorbeeld toont hoe een teksttabel kan worden gemaakt. De opties voor toegang tot de teksttabellen worden beschreven in het volgende gedeelte.}}
  
 
=== Tabellen bewerken ===
 
=== Tabellen bewerken ===
Line 88: Line 88:
 
Een tabel bevat een lijst op opgenomen rijen. Het volgende voorbeeld toont hoe de rijen van een tabel kan worden teruggevonden en opgemaakt.
 
Een tabel bevat een lijst op opgenomen rijen. Het volgende voorbeeld toont hoe de rijen van een tabel kan worden teruggevonden en opgemaakt.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
 
Dim Tabel As Object
 
Dim Tabel As Object
Line 108: Line 108:
 
   Rij.BackColor = &HFF00FF
 
   Rij.BackColor = &HFF00FF
 
Next
 
Next
</source>
+
</syntaxhighlight>
  
 
Het voorbeeld maakt eerst een lijst die alle rijen bevat met behulp van een aanroep <tt>Tabel.getRows</tt>. De methoden <tt>getCount</tt> en <tt>getByIndex</tt> staan toe dat de lijst verder wordt verwerkt en behoort tot de interface <tt>com.sun.star.table.XtableRows</tt>. De methode <tt>getByIndex</tt> geeft een rij-object terug dat de service <idl>com.sun.star.text.TextTableRow</idl> ondersteunt.
 
Het voorbeeld maakt eerst een lijst die alle rijen bevat met behulp van een aanroep <tt>Tabel.getRows</tt>. De methoden <tt>getCount</tt> en <tt>getByIndex</tt> staan toe dat de lijst verder wordt verwerkt en behoort tot de interface <tt>com.sun.star.table.XtableRows</tt>. De methode <tt>getByIndex</tt> geeft een rij-object terug dat de service <idl>com.sun.star.text.TextTableRow</idl> ondersteunt.
Line 133: Line 133:
 
Kolommen worden benaderd op dezelfde wijze als rijen, met gebruik van de methoden <tt>getByIndex</tt>, <tt>getCount</tt>, <tt>insertByIndex</tt> en <tt>removeByIndex</tt> op het object Column, dat wordt bereikt via <tt>getColumns</tt>. Zij kunnen echter alleen worden gebruikt in tabellen die geen samengevoegde cellen bevatten. Cellen kunnen niet per kolom worden opgemaakt in {{OOo}} BASIC. De methode voor het opmaken van individuele tabelcellen moet wordne gebruikt om dat te doen.
 
Kolommen worden benaderd op dezelfde wijze als rijen, met gebruik van de methoden <tt>getByIndex</tt>, <tt>getCount</tt>, <tt>insertByIndex</tt> en <tt>removeByIndex</tt> op het object Column, dat wordt bereikt via <tt>getColumns</tt>. Zij kunnen echter alleen worden gebruikt in tabellen die geen samengevoegde cellen bevatten. Cellen kunnen niet per kolom worden opgemaakt in {{OOo}} BASIC. De methode voor het opmaken van individuele tabelcellen moet wordne gebruikt om dat te doen.
  
=== Cells ===
+
=== Cellen ===
  
Each cell of a {{OOo}} document has a unique name. If the cursor of {{OOo}} is in a cell, then the name of that cell can be seen in the status bar. The top left cell is usually called A1 and the bottom right row is usually called <tt>Xn</tt>, where <tt>X</tt> stands for the letters of the top column and <tt>n</tt> for the numbers of the last row. The cell objects are available through the <tt>getCellByName()</tt> method of the table object. The following example shows a loop that passes through all the cells of a table and enters the corresponding row and column numbers into the cells.
+
Elke cel van een document in {{OOo}} heeft een unieke naam. Als de cursor van {{OOo}} in a cel staat, dan kan de naam van die cel worden gezien in de statusbalk. De cel linksboven wordt meestal A1 genoemd en de onderste rij rechts is gewoonlijk genaamd <tt>Xn</tt>, waar <tt>X</tt> staat voor de letter(s) van de kolomkop en <tt>n</tt> voor het getal van de laatste rij. De celobjecten zijn beschikbaar via de methode <tt>getCellByName()</tt> van het tabelobject.  
  
<source lang="oobas">
+
Het volgende voorbeeld toont een lus die door alle cellen van de tabel gaat en het corresponderende rij- en kolomnummer in de cel invoert.
 +
 
 +
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim Table As Object
+
Dim Tabel As Object
 
Dim Cursor As Object
 
Dim Cursor As Object
Dim Rows As Object
+
Dim Rijen As Object
Dim RowIndex As Integer
+
Dim RijIndex As Integer
Dim Cols As Object
+
Dim Kolommen As Object
Dim ColIndex As Integer
+
Dim KolIndex As Integer
Dim CellName As String
+
Dim CelNaam As String
Dim Cell As Object
+
Dim Cel As Object
  
 
Doc = ThisComponent
 
Doc = ThisComponent
 
Cursor = Doc.Text.createTextCursor()
 
Cursor = Doc.Text.createTextCursor()
  
Table = Doc.createInstance("com.sun.star.text.TextTable")
+
Tabel = Doc.createInstance("com.sun.star.text.TextTable")
Table.initialize(5, 4)
+
Tabel.initialize(5, 4)
  
Doc.Text.insertTextContent(Cursor, Table, False)
+
Doc.Text.insertTextContent(Cursor, Tabel, False)
  
Rows = Table.getRows
+
Rijen = Tabel.getRows
Cols = Table.getColumns
+
Kolommen = Tabel.getColumns
  
For RowIndex = 1 To Rows.getCount()
+
For RijIndex = 1 To Rijen.getCount()
   For ColIndex = 1 To Cols.getCount()
+
   For KolIndex = 1 To Kolommen.getCount()
       CellName = Chr(Asc("A") - 1 + ColIndex) & RowIndex
+
       CelNaam = Chr(Asc("A") - 1 + KolIndex) & RijIndex
       Cell = Table.getCellByName(CellName)
+
       Cel = Tabel.getCellByName(CelNaam)
       Cell.String = "row: " & CStr(RowIndex) + ", column: " & CStr(ColIndex)
+
       Cel.String = "rij: " & CStr(RijIndex) + ", kolom: " & CStr(KolIndex)
 
   Next
 
   Next
 
Next
 
Next
</source>
+
</syntaxhighlight>
  
A table cell is comparable with a standard text. It supports the <tt>createTextCursor</tt> interface for creating an associated <tt>TextCursor</tt> object.
+
Een tabelcel is vergelijkbaar met standaard tekst. Het ondersteunt de interface <tt>createTextCursor</tt> voor het maken van een geassocieerd object <tt>TextCursor</tt>.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
CellCursor = Cell.createTextCursor()
+
CelCursor = Cel.createTextCursor()
</source>
+
</syntaxhighlight>
  
All formatting options for individual characters and paragraphs are therefore automatically available.
+
Alle opmaakopties voor individuele tekens en alinea's zijn daardoor automatisch beschikbaar.
  
The following example searches through all tables of a text document and applies the right-align format to all cells with numerical values by means of the corresponding paragraph property.
+
Het volgende voorbeeld zoekt door alle tabellen van een tekstdocument en past de opmaak Rechts uitlijnen toe op alle cellen met numerieke waarde, door middel van de corresponderende eigenschap van de alinea.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim TextTables As Object
+
Dim TekstTabellen As Object
Dim Table As Object
+
Dim Tabel As Object
Dim CellNames
+
Dim CelNamen
Dim Cell As Object
+
Dim Cel As Object
Dim CellCursor As Object
+
Dim CelCursor As Object
 
Dim I As Integer
 
Dim I As Integer
 
Dim J As Integer
 
Dim J As Integer
  
 
Doc = ThisComponent
 
Doc = ThisComponent
TextTables = Doc.getTextTables()
+
TekstTabellen = Doc.getTextTables()
  
For I = 0 to TextTables.count - 1
+
For I = 0 to TekstTabellen.count - 1
   Table = TextTables(I)
+
   Tabel = TekstTabellen(I)
   CellNames = Table.getCellNames()
+
   CelNamen = Tabel.getCellNames()
  
   For J = 0 to UBound(CellNames)
+
   For J = 0 to UBound(CelNamen)
       Cell = Table.getCellByName(CellNames(J))
+
       Cel = Tabel.getCellByName(CelNamen(J))
       If IsNumeric(Cell.String) Then
+
       If IsNumeric(Cel.String) Then
         CellCursor = Cell.createTextCursor()
+
         CelCursor = Cel.createTextCursor()
         CellCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
+
         CelCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
 
       End If
 
       End If
 
   Next
 
   Next
 
Next
 
Next
</source>
+
</syntaxhighlight>
  
The example creates a <tt>TextTables</tt> list containing all tables of a text that are traversed in a loop. {{OOo}} then creates a list of the associated cell names for each of these tables. There are passed through in turn in a loop. If a cell contains a numerical value, then the example changes the formatting correspondingly. To do this, it first creates a <tt>TextCursor</tt> object which makes reference to the content of the table cell and then adapts the paragraph properties of the table cell.
+
Het voorbeeld maakt een lijst <tt>TekstTabellen</tt>, die alle tabellen bevat, die worden doorlopen in een lus. {{OOo}} maakt dan een lijst van de geassocieerde celnamen voor elk van deze tabellen. Zij worden op hun beurt doorlopen in een lus. Als een cel een numerieke waarde bevat, dan verandert het voorbeeld de opmaak overeenkomstig. Om dit te doen, maakt het eerst een object <tt>TextCursor</tt> dat refereert aan de inhoud van de tabelcel en past dan de alinea-eigenschappen van de tabelcel aan.
  
== Text Frames ==
+
== Tekstframes ==
  
Text frames are considered to be <tt>TextContent</tt> objects, just like tables and graphs. They may essentially consist of standard text, but can be placed at any position on a page and are not included in the text flow.
+
Tekstframes worden verondersteld objecten <tt>TextContent</tt> te zijn, net als tabellen en afbeeldingen. Zij mogen essentieel bestaan uit standaard tekst, maar kunnen worden geplaatst op elke positie op elke pagina en worden niet opgenomen in de tekststroom.
 +
 
 +
Net als met alle objecten <tt>TextContent</tt> wordt ook met tekstframes een onderscheid gemaakt tussen het echte maken en het invoegen in het document.
  
As with all <tt>TextContent</tt> objects, a distinction is also made with text frames between the actual creation and insertion in the document.
 
  
 
<source lang="oobas">
 
<source lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim TextTables As Object
+
Dim TekstTabellen As Object
 
Dim Cursor As Object
 
Dim Cursor As Object
 
Dim Frame As Object
 
Dim Frame As Object
Line 225: Line 228:
 
</source>
 
</source>
  
The text frame is created using the <tt>createInstance</tt> method of the document object. The text frame created in this way can then be inserted in the document using the <tt>insertTextContent</tt> method of the <tt>Text</tt> object. In so doing, the name of the proper <idl>com.sun.star.text.TextFrame</idl> service should be specified.  
+
Het tekstframe wordt gemaakt met gebruik van de methode <tt>createInstance</tt> van het document-object. Het op deze manier gemaakte tekstframe kan dan worden ingevoegd in het document met behulp van de methode <tt>insertTextContent</tt> van het object <tt>Text</tt>. De naam van de juiste service  <idl>com.sun.star.text.TextFrame</idl> zou moeten worden gespecificeerd, om dit zo te doen.
  
The text frame's insert position is determined by a <tt>Cursor</tt> object, which is also executed when inserted.
+
De positie voor het invoegen van het tekstframe wordt bepaald door een object <tt>Cursor</tt>, wat ook wordt uitgevoerd bij het invoegen.
  
{{Documentation/VBAnote|Text frames are {{OOo}}'s counterpart to the position frame used in Word. Whereas VBA uses the <tt>Document.Frames.Add</tt> method for this purpose, creation in {{OOo}} Basic is performed using the previous procedure with the aid of a <tt>TextCursor</tt> as well as the <tt>createInstance</tt> method of the document object.}}
+
{{Documentation/VBAnote|Tekstframes zijn componenten van {{OOo}} voor het positie-frame dat wordt gebruikt in Word. Waar VBA de methode <tt>Document.Frames.Add</tt> voor dit doel gebruikt, wordt het maken in {{OOo}} uitgevoerd met behulp van de voorgaande procedure met de hulp van zowel een <tt>TextCursor</tt> als de methode <tt>createInstance</tt> van het document.}}
  
Text frame objects provide a range of properties with which the position and behavior of the frame can be influenced. The majority of these properties are defined in the <idl>com.sun.star.text.BaseFrameProperties</idl> service, which is also supported by each <tt>TextFrame</tt> service. The central properties are:  
+
Objecten Tekstframe verschaffen een bereik aan eigenschappen, waarmee de positie en het gedrag van het kader kan worden beïnvloed. De meeste van deze eigenschappen worden gedefinieerd in de service <idl>com.sun.star.text.BaseFrameProperties</idl>, die ook wordt ondersteund door elke service <tt>TextFrame</tt>. De centrale eigenschappen zijn:
  
;<tt>BackColor (Long)</tt>:background color of the text frame.
+
;<tt>BackColor (Long)</tt>:kleur van de achtergrond van het frame.
;<tt>BottomMargin (Long)</tt>:bottom margin in 100ths of a millimeter.
+
;<tt>BottomMargin (Long)</tt>:ondermarge in 100-en van een millimeter.
;<tt>LeftMargin (Long)</tt>:left margin in 100ths of a millimeter.
+
;<tt>LeftMargin (Long)</tt>:linker marge in 100-en van een millimeter.
;<tt>RightMargin (Long)</tt>:right margin in 100ths of a millimeter.
+
;<tt>RightMargin (Long)</tt>:rechter marge in 100-en van een millimeter.
;<tt>TopMargin (Long)</tt>:top margin in 100ths of a millimeter.
+
;<tt>TopMargin (Long)</tt>:bovenmarge in 100-en van een millimeter.
;<tt>Height (Long)</tt>:height of text frame in 100ths of a millimeter.
+
;<tt>Height (Long)</tt>:hoogte van tekstframe in 100-en van een millimeter.
;<tt>Width (Long)</tt>:width of text frame in 100ths of a millimeter.
+
;<tt>Width (Long)</tt>:breedte van tekstframe in 100-en van een millimeter.
;<tt>HoriOrient (const)</tt>:horizontal orientation of text frame (in accordance with <idl>com.sun.star.text.HoriOrientation</idl>).
+
;<tt>HoriOrient (const)</tt>:horizontale oriëntatie van het tekstframe (overeenkomend met <idl>com.sun.star.text.HoriOrientation</idl>).
;<tt>VertOrient (const)</tt>:vertical orientation of text frame (in accordance with <idl>com.sun.star.text.VertOrientation</idl>).
+
;<tt>VertOrient (const)</tt>:verticale oriëntatie van het tekstframe (overeenkomend met <idl>com.sun.star.text.VertOrientation</idl>).
  
The following example creates a text frame using the properties described previously:
+
Het volgende voorbeeld maakt een tekstframe waarbij het de hiervoor beschreven eigenschappen gebruikt:
  
 
<source lang="oobas">
 
<source lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim TextTables As Object
+
Dim TekstTabellen As Object
 
Dim Cursor As Object
 
Dim Cursor As Object
 
Dim Frame As Object
 
Dim Frame As Object
Line 270: Line 273:
 
</source>
 
</source>
  
The example creates a <tt>TextCursor</tt> as the insertion mark for the text frame. This is positioned between the first and second word of the text. The text frame is created using <tt>Doc.createInstance</tt>. The properties of the text frame objects are set to the starting values required.
+
Het voorbeeld maakt een <tt>TextCursor</tt> als de markering voor het invoegen voor het tekstframe. Dit wordt geplaatst tussen het eerste en tweede woord van de tekst. Het tekstframe wordt gemaakt met behulp van <tt>Doc.createInstance</tt>. De eigenschappen van de  objecten Tekstframe worden ingesteld op de gewenste startwaarden.
  
The interaction between the <tt>AnchorType</tt> (from the <tt>TextContent</tt> Service) and <tt>VertOrient</tt> (from the <tt>BaseFrameProperties</tt> Service) properties should be noted here. <tt>AnchorType</tt> receives the <tt>AS_CHARACTER</tt> value. The text frame is therefore inserted directly in the text flow and behaves like a character. It can, for example, be moved into the next line if a line break occurs. The <tt>LINE_TOP</tt> value of the <tt>VertOrient</tt> property ensures that the upper edge of the text frame is at the same height as the upper edge of the character.
+
De interactie tussen de eigenschappen van <tt>AnchorType</tt> (van de service <tt>TextContent</tt> ) en <tt>VertOrient>/tt> (van de service <tt>BaseFrameProperties</tt>) zouden hier moeten opvallen. <tt>AnchorType</tt> ontvangt de waarde <tt>AS_CHARACTER</tt>. Het tekstframe wordt daarom direct in de tekststroom ingevoegd en gedraagt zich als een teken. Het kan, bijvoorbeeld, worden verplaatst naar de volgende regel als een regeleinde voorkomt. De waarde <tt>LINE_TOP</tt> van de eigenschap <tt>VertOrient</tt> zorgt er voor dat de bovenrand van het tekstframe op dezelfde hoogte staat als de bovenrand van het teken.  
  
Once initialization is complete, the text frame is finally inserted in the text document using a call from <tt>insertTextContent</tt>.
+
Als de initialisatie voltooid is, wordt het tekstframe tenslotte ingevoegd in het tekstdocument met behulp van een aanroep van <tt>insertTextContent</tt>.
  
To edit the content of a text frame, the user uses the <tt>TextCursor</tt>, which has already been mentioned numerous times and is also available for text frames.
+
De gebruiker gebruikt de <tt>TextCursor</tt>, welke al diverse malen is genoemd en ook beschikbaar is voor tekstframes, om de inhoud van een tekstframe te bewerken.
  
 
<source lang="oobas">
 
<source lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim TextTables As Object
+
Dim TekstTabellen As Object
 
Dim Cursor As Object
 
Dim Cursor As Object
 
Dim Frame As Object
 
Dim Frame As Object
Line 297: Line 300:
 
FrameCursor.charWeight = com.sun.star.awt.FontWeight.BOLD
 
FrameCursor.charWeight = com.sun.star.awt.FontWeight.BOLD
 
FrameCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.CENTER
 
FrameCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.CENTER
FrameCursor.String = "This is a small Test!"
+
FrameCursor.String = "Dit is een kleine Test!"
 
</source>
 
</source>
  
The example creates a text frame, inserts this in the current document and opens a <tt>TextCursor</tt> for the text frame. This cursor is used to set the frame font to bold type and to set the paragraph orientation to centered. The text frame is finally assigned the “This is a small test!” string.
+
Het voorbeeld maakt een tekstframe, voegt dit in het huidige document in en opent een <tt>TextCursor</tt> voor het tekstframe. Deze cursor wordt gebruikt om het lettertype van het frame op type Vet in te stellen en de oriëntatie van de alinea op gecentreerd. Aan het tekstframe wordt tenslotte de tekenreeks “Dit is een kleine test!” toegewezen.
  
== Text Fields ==
+
== Tekstvelden ==
  
Text fields are <tt>TextContent</tt> objects because they provide additional logic extending beyond pure text. Text fields can be inserted in a text document using the same methods as those used for other <tt>TextContent</tt> objects:
+
Tekstvelden zijn objecten <tt>TextContent</tt> omdat zij aanvullende logische uitbreiding verschaffen naast pure tekst. Tekstvelden kunnen worden ingevoegd in een tekstdocument met behulp van dezelfde methoden als die welke worden gebruikt voor andere objecten <tt>TextContent</tt>:
  
 
<source lang="oobas">
 
<source lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim DateTimeField As Object
+
Dim DatumTijdVeld As Object
 
Dim Cursor As Object
 
Dim Cursor As Object
 
Doc = ThisComponent
 
Doc = ThisComponent
 
Cursor = Doc.Text.createTextCursor()
 
Cursor = Doc.Text.createTextCursor()
  
DateTimeField = Doc.createInstance("com.sun.star.text.textfield.DateTime")
+
DatumTijdVeld = Doc.createInstance("com.sun.star.text.textfield.DateTime")
DateTimeField.IsFixed = False
+
DatumTijdVeld.IsFixed = False
DateTimeField.IsDate = True
+
DatumTijdVeld.IsDate = True
Doc.Text.insertTextContent(Cursor, DateTimeField, False)
+
Doc.Text.insertTextContent(Cursor, DatumTijdVeld, False)
 
</source>
 
</source>
  
The example inserts a text field with the current date at the start of the current text document. The <tt>True</tt> value of the <tt>IsDate</tt> property results in only the date and not time being displayed. The <tt>False</tt> value for <tt>IsFixed</tt> ensures that the date is automatically updated when the document is opened.
+
Het voorbeeld voegt een tekstveld in met de huidige datum aan het begin van het huidige tekstdocument. De waarde <tt>True</tt> van de eigenschap <tt>IsDate</tt> resulteert er in dat alleen de datum en niet de tijd wordt weergegeven. De waarde <tt>False</tt> voor <tt>IsFixed</tt> zorgt er voor dat de datum automatisch wordt ververst als het document wordt geopend.
 +
 
 +
{{Documentation/VBAnote|Terwijl het type van een veld in VBA wordt gespecificeerd door een parameter van de methode <tt>Document.Fields.Add</tt>, definieert de naam van de service die verantwoordelijk is voor betreffende type dat in {{OOo}} BASIC.}}
  
{{Documentation/VBAnote|While the type of a field in VBA is specified by a parameter of the <tt>Document.Fields.Add</tt> method, the name of the service that is responsible for the field type in question defines it in {{OOo}} Basic.}}
+
{{Documentation/SO5note|In het verleden werd toegang tot tekstvelden verkregen met behulp van een groot aantal methoden die {{OOo}} beschikbaar maakte in het oude object <tt>Selection</tt> (bijvoorbeeld <tt>InsertField</tt>, <tt>DeleteUserField</tt>, <tt>SetCurField)</tt>.}}  
  
{{Documentation/SO5note|In the past, text fields were accessed using a whole range of methods that {{OOo}} made available in the old <tt>Selection</tt> object (for example <tt>InsertField</tt>, <tt>DeleteUserField</tt>, <tt>SetCurField)</tt>.}}
+
In {{OOo}} worden de velden beheerd door middel van een object-georiënteerd concept. Om een tekstveld te maken, moet eerst een tekstveld van het betreffende type worden gemaakt en geïnitialiseerd met behulp van de vereiste eigenschappen. Het tekstveld wordt dan ingevoegd in het document met behulp van de methode <tt>insertTextContent</tt>. Een corresponderende brontekst kan worden bekeken in het voorgaande voorbeeld. De meest belangrijke veldtypen en hun eigenschappen worden beschreven in de volgende gedeelten.
  
In {{OOo}}, the fields are administered using an object-oriented concept. To create a text field, a text field of the type required should first be created and initialized using the properties required. The text field is then inserted in the document using the <tt>insertTextContent</tt> method. A corresponding source text can be seen in the previous example. The most important field types and their properties are described in the following sections.
+
In aanvulling op het invoegen van tekstvelden, kan ook het zoeken in een document naar die velden een belangrijke taak zijn. Het volgende voorbeeld toont hoe alle velden van een tekstdocument kunnen worden doorlopen in een lus en gecontroleerd op hun relevante type.
  
In addition to inserting text fields, searching a document for the fields can also be an important task. The following example shows how all text fields of a text document can be traversed in a loop and checked for their relevant type.
 
  
 
<source lang="oobas">
 
<source lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim TextFieldEnum As Object
+
Dim TekstVeldEnum As Object
Dim TextField As Object
+
Dim TekstVeld As Object
 
Dim I As Integer
 
Dim I As Integer
  
 
Doc = ThisComponent
 
Doc = ThisComponent
  
TextFieldEnum = Doc.getTextFields.createEnumeration
+
TekstVeldEnum = Doc.getTextFields.createEnumeration
  
While TextFieldEnum.hasMoreElements()
+
While TekstVeldEnum.hasMoreElements()
  
   TextField = TextFieldEnum.nextElement()
+
   TekstVeld = TekstVeldEnum.nextElement()
  
   If TextField.supportsService("com.sun.star.text.textfield.DateTime") Then
+
   If TekstVeld.supportsService("com.sun.star.text.textfield.DateTime") Then
       MsgBox "Date/time"
+
       MsgBox "Datum/tijd"
   ElseIf TextField.supportsService("com.sun.star.text.textfield.Annotation") Then
+
   ElseIf TekstVeld.supportsService("com.sun.star.text.textfield.Annotation") Then
       MsgBox "Annotation"
+
       MsgBox "Notitie"
 
   Else
 
   Else
       MsgBox "unknown"
+
       MsgBox "Onbekend"
 
   End If
 
   End If
  
Line 354: Line 358:
 
</source>
 
</source>
  
The starting point for establishing the text fields present is the <tt>TextFields</tt> list of the document object. The example creates an <tt>Enumeration</tt> object on the basis of this list, with which all text fields can be queried in turn in a loop. The text fields found are checked for the service supported using the <tt>supportsService</tt> method. If the field proves to be a date/time field or an annotation, then the corresponding field type is displayed in an information box. If on the other hand, the example encounters another field, then it displays the information “unknown”.
+
Het startpunt om de aanwezige tekstvelden vast te stellen is de lijst <tt>TekstVelden</tt> van het documentobject. Het voorbeeld maakt een object <tt>Enumeration</tt> op basis van die lijst, waarmee alle tekstvelden op hun beurt kunnen worden bevraagd in een lus. De gevonden tekstvelden worden gecontroleerd op de ondersteunde service door middel van de methode <tt>supportsService</tt>. Als het veld bewijst een veld met datum/tijd te zijn of een Notitie, dan wordt het corresponderende veldtype weergegeven in een berichtenvenster. Als, aan de andere kant, het voorbeeld een ander soort veld tegenkomt, dan geeft het de informatie “Onbekend” weer.
  
Below, you will find a list of the most important text fields and their associated properties. A complete list of all text fields is provided in the API reference in the <tt>com.sun.star.text.textfield</tt> module. (When listing the service name of a text field, uppercase and lowercase characters should be used in {{OOo}} Basic, as in the previous example.)
+
Hieronder vindt u een lijst van de meest belangrijke tekstvelden en hun geassocieerde eigenschappen. Een complete lijst van alle tekstvelden wordt verschaft via de API referentie in de module <tt>com.sun.star.text.textfield</tt>. (Bij opsommen van de service-naam van een tekstveld, zouden Hoofd- en kleine letters in acht moeten worden genomen in {{OOo}} BASIC, zoals in het voorgaande voorbeeld.)
  
=== Number of Pages, Words and Characters ===
 
  
The text fields
+
=== Aantal pagina's, woorden en tekens ===
 +
 
 +
De tekstvelden
  
 
* <idl>com.sun.star.text.textfield.PageCount</idl>
 
* <idl>com.sun.star.text.textfield.PageCount</idl>
Line 366: Line 371:
 
* <idl>com.sun.star.text.textfield.CharacterCount</idl>
 
* <idl>com.sun.star.text.textfield.CharacterCount</idl>
  
return the number of pages, words, or characters of a text. They support the following property:  
+
geven het aantal pagina's, woorden of tekens van een tekst weer. Zij ondersteunen de volgende eigenschap:
  
;<tt>NumberingType (const)</tt>:numbering format (guidelines in accordance with constants from <idl>com.sun.star.style.NumberingType</idl> ).
+
;<tt>NumberingType (const)</tt>:opmaak voor nummering (richtlijnen overeenkomend met constanten van <idl>com.sun.star.style.NumberingType</idl> ).
  
=== Current Page ===
+
=== Huidige pagina ===
  
The number of the current page can be inserted in a document using the <idl>com.sun.star.text.textfield.PageNumber</idl> text field. The following properties can be specified:  
+
Het nummer van de huidige pagina kan worden ingevoegd in een document met behulp van het tekstveld <idl>com.sun.star.text.textfield.PageNumber</idl>. De volgende eigenschappen kunnen worden gespecificeerd:
  
;<tt>NumberingType (const)</tt>:number format (guidelines in accordance with constants from <idl>com.sun.star.style.NumberingType</idl>).
+
;<tt>NumberingType (const)</tt>:getalopmaak (richtlijnen overeenkomend met constanten uit <idl>com.sun.star.style.NumberingType</idl>).
;<tt>Offset (short) </tt>:offset added to the number of pages (negative specification also possible).
+
;<tt>Offset (short) </tt>:verschuiving toegevoegd aan het aantal pagina's (negatieve specificatie is ook mogelijk).
  
The following example shows how the number of pages can be inserted into the footer of a document.
+
Het volgende voorbeeld toont hoe het aantal pagina's kan worden ingevoegd in de voettekst van een document.
  
 
<source lang="oobas">
 
<source lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim DateTimeField As Object
+
Dim DatumTijdVeld As Object
Dim PageStyles As Object
+
Dim PaginaOpmaakprofielen As Object
Dim StdPage As Object
+
Dim StdPagina As Object
Dim FooterCursor As Object
+
Dim VoetCursor As Object
Dim PageNumber As Object
+
Dim PaginaNummer As Object
  
 
Doc = ThisComponent
 
Doc = ThisComponent
  
PageNumber = Doc.createInstance("com.sun.star.text.textfield.PageNumber")
+
PaginaNummer = Doc.createInstance("com.sun.star.text.textfield.PageNumber")
PageNumber.NumberingType = com.sun.star.style.NumberingType.ARABIC
+
PaginaNummer.NumberingType = com.sun.star.style.NumberingType.ARABIC
  
PageStyles = Doc.StyleFamilies.getByName("PageStyles")
+
PaginaOpmaakprofielen = Doc.StyleFamilies.getByName("PageStyles")
  
StdPage = PageStyles("Default")
+
StdPagina = PaginaOpmaakprofielen("Standaard")
StdPage.FooterIsOn = True
+
StdPagina.FooterIsOn = True
  
FooterCursor = StdPage.FooterTextLeft.Text.createTextCursor()
+
VoetCursor = StdPagina.FooterTextLeft.Text.createTextCursor()
StdPage.FooterTextLeft.Text.insertTextContent(FooterCursor, PageNumber, False)
+
StdPagina.FooterTextLeft.Text.insertTextContent(VoetCursor, PaginaNummer, False)
 
</source>
 
</source>
  
The example first creates a text field which supports the <idl>com.sun.star.text.textfield.PageNumber</idl> service. Since the header and footer lines are defined as part of the page templates of {{OOo}}, this is initially established using the list of all <tt>PageStyles</tt>.
+
Het voorbeeld maakt eerst een tekstveld dat de service <idl>com.sun.star.text.textfield.PageNumber</idl> ondersteunt. Omdat de regels voor de koptekst en voettekst zijn gedefinieerd als deel van het pagina-opmaakprofiel van {{OOo}}, wordt dat eerst vastgesteld met behulp van de lijst van alle <tt>PageStyles</tt>.
  
To ensure that the footer line is visible, the <tt>FooterIsOn</tt> property is set to <tt>True</tt>. The text field is then inserted in the document using the associated text object of the left-hand footer line.
+
Om te zorgen dat de regel voor de voettekst zichtbaar is, wordt de eigenschap <tt>FooterIsOn</tt> ingesteld op <tt>True</tt>. Het tekstveld wordt dan ingevoegd in het document met behulp van het geassocieerde tekstobject van de regel voor de voettekst van de linkerpagina.
  
=== Annotations ===
+
=== Notities ===
  
Annotation fields (<idl>com.sun.star.text.textfield.Annotation</idl>) can be seen by means of a small yellow symbol in the text. Clicking on this symbol opens a text field, in which a comment on the current point in the text can be recorded. An annotation field has the following properties.
+
Velden Notities (<idl>com.sun.star.text.TextField.Annotation</idl>) kunnen worden bekeken door middel van een klein geel symbool in de tekst. Klikken op dit symbool opent een tekstveld, waarin een opmerking over het huidige punt in de tekst kan worden opgenomen. Een veld Notitie heeft de volgende eigenschappen.
  
;<tt>Author (String)</tt>:name of author.
+
;<tt>Author (String)</tt>:naam van de auteur.
;<tt>Content (String)</tt>:comment text.
+
;<tt>Content (String)</tt>:tekst van de notitie.
;<tt>Date (Date)</tt>:date on which annotation is written.
+
;<tt>Date (Date)</tt>:datum waarop de notitie is geschreven.
  
=== Date / Time ===
+
=== Datum / Tijd ===
  
A date / time field (<idl>com.sun.star.text.textfield.DateTime</idl>) represents the current date or the current time. It supports the following properties:
+
Een veld datum / tijd (<idl>com.sun.star.text.textfield.DateTime</idl>) geeft de huidige datum of de huidige tijd weer. Het ondersteunt de volgende eigenschappen:
  
;<tt>IsFixed (Boolean)</tt>:if <tt>True</tt>, the time details of the insertion remain unchanged, if <tt>False</tt>, these are updated each time the document is opened.
+
;<tt>IsFixed (Boolean)</tt>:indien <tt>True</tt> blijven de details voor de tijd van de invoeging onveranderd, indien <tt>False</tt> worden deze, elke keer als document wordt geopend, ververst.
;<tt>IsDate (Boolean)</tt>:if <tt>True</tt>, the field displays the current date, otherwise the current time.
+
;<tt>IsDate (Boolean)</tt>:indien <tt>True</tt> geeft het veld de huidige datum weer, anders de huidige tijd.
;<tt>DateTimeValue (struct)</tt>:current content of field (<idl>com.sun.star.util.DateTime</idl> structure)
+
;<tt>DateTimeValue (struct)</tt>:huidige inhoud van het veld (structuur van <idl>com.sun.star.util.DateTime</idl>)
;<tt>NumberFormat (const)</tt>:format in which the time or date is depicted.
+
;<tt>NumberFormat (const)</tt>:opmaak waarin de tijd of datum wordt weergegeven.
  
=== Chapter Name / Number ===
+
=== Naam hoofdstuk / nummer ===
  
The name of the current chapter is available through a text field of the <idl>com.sun.star.text.textfield.Chapter</idl> type. The form can be defined using two properties.
+
De naam van het huidige hoofdstuk is beschikbaar via een tekstveld van het type <idl>com.sun.star.text.textfield.Chapter</idl>. De vorm kan worden gedefinieerd met behulp van twee eigenschappen.
  
;<tt>ChapterFormat (const)</tt>:determines whether the chapter name or the chapter number is depicted (in accordance with <idl>com.sun.star.text.ChapterFormat</idl>)
+
;<tt>ChapterFormat (const)</tt>:stelt vast of de naam of nummer van het hoofdstuk moet worden weergegeven (overeenkomend met <idl>com.sun.star.text.ChapterFormat</idl>)
;<tt>Level (Integer)</tt>:determines the chapter level whose name and/or chapter number is to be displayed. The value 0 stands for highest level available.
+
;<tt>Level (Integer)</tt>:stelt het niveau voor het hoofdstuk vast waarvan de naam en/of nummer moet worden weergegeven. De waarde 0 staat voor het hoogst beschikbare niveau.
  
== Bookmarks ==
+
== Bladwijzers ==
  
Bookmarks (Service <idl>com.sun.star.text.Bookmark</idl>) are <tt>TextContent</tt> objects. Bookmarks are created and inserted using the concept already described previously:
+
Bladwijzers (Service <idl>com.sun.star.text.Bookmark</idl>) zijn objecten <tt>TextContent</tt>. Bladwijzers worden gemaakt en ingevoegd via het reeds eerder beschreven concept:
  
 
<source lang="oobas">
 
<source lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim Bookmark As Object
+
Dim Bladwijzer As Object
 
Dim Cursor As Object
 
Dim Cursor As Object
  
Line 442: Line 447:
 
Cursor = Doc.Text.createTextCursor()
 
Cursor = Doc.Text.createTextCursor()
  
Bookmark = Doc.createInstance("com.sun.star.text.Bookmark")
+
Bladwijzer = Doc.createInstance("com.sun.star.text.Bookmark")
Bookmark.Name = "My bookmarks"
+
Bladwijzer.Name = "Mijn bladwijzers"
Doc.Text.insertTextContent(Cursor, Bookmark, True)
+
Doc.Text.insertTextContent(Cursor, Bladwijzer, True)
 
</source>
 
</source>
  
The example creates a <tt>Cursor</tt>, which marks the insert position of the bookmark and then the actual bookmark object (<tt>Bookmark</tt>). The bookmark is then assigned a name and is inserted in the document through <tt>insertTextContent</tt> at the cursor position.
+
Het voorbeeld maakt een <tt>Cursor</tt> die de invoegpositie van de bladwijzer aangeeft en dan het echte object Bladwijzer (<tt>Bookmark</tt>). De bladwijzer wordt dan een naam toegewezen en wordt op de cursorpositie in het document ingevoegd via <tt>insertTextContent</tt>.
  
The bookmarks of a text are accessed through a list called <tt>Bookmarks</tt>. The bookmarks can either be accessed by their number or their name.
+
Toegang tot de Bladwijzers van een tekst wordt verkregen via een lijst genaamd <tt>Bookmarks</tt>. Toegang tot de bladwijzers kan ofwel worden verkregen via hun nummer dan wel hun naam.
  
The following example shows how a bookmark can be found within a text, and a text inserted at its position.
+
Het volgende voorbeeld toont hoe een bladwijzer kan worden gevonden binnen een tekst en een tekst ingevoegd op zijn positie.
  
 
<source lang="oobas">
 
<source lang="oobas">
 
Dim Doc As Object
 
Dim Doc As Object
Dim Bookmark As Object
+
Dim Bladwijzer As Object
 
Dim Cursor As Object
 
Dim Cursor As Object
  
 
Doc = ThisComponent
 
Doc = ThisComponent
  
Bookmark = Doc.Bookmarks.getByName("My bookmarks")
+
Bladwijzer = Doc.Bookmarks.getByName("Mijn bladwijzers")
  
 
Cursor = Doc.Text.createTextCursorByRange(Bookmark.Anchor)
 
Cursor = Doc.Text.createTextCursorByRange(Bookmark.Anchor)
Cursor.String = "Here is the bookmark"
+
Cursor.String = "Hier staat de bladwijzer"
 
</source>
 
</source>
  
In this example, the <tt>getByName</tt> method is used to find the bookmark required by means of its name. The <tt>createTextCursorByRange</tt> call then creates a <tt>Cursor</tt>, which is positioned at the anchor position of the bookmark. The cursor then inserts the text required at this point.
+
In dit voorbeeld wordt de methode <tt>getByName</tt> gebruikt om de gewenste bladwijzer te vinden door middel van zijn naam.  
 
+
De aanroep <tt>createTextCursorByRange</tt> maakt dan een <tt>Cursor</tt>, welke wordt geplaatst op de plaats van verankering van de bladwijzer. De cursor voegt dan de gewenste tekst in op dit punt.
 
   
 
   
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/More Than Text}}
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/More Than Text}}
 
{{PDL1}}
 
{{PDL1}}

Revision as of 12:47, 31 December 2019

Book.png


Tot zover heeft dit hoofdstuk alleen tekstalinea's en hun gedeelten behandeld. Maar tekstdocumenten kunnen ook andere objecten bevatten. Dit kunnen tabellen, tekeningen, tekstvelden en verwijzingen zijn. Al deze objecten kunnen worden verankerd aan elk punt binnen een tekst.

Dankzij deze algemene mogelijkheden ondersteunen al deze objecten in Apache OpenOffice een algemene basisservice, genaamd com.sun.star.text.TextContent. Deze verschaft de volgende eigenschappen:

AnchorType (Enum)
bepaalt het verankeringstype van een object TextContent (standaardwaarden die overeenkomen met de nummering van com.sun.star.text.TextContentAnchorType).
AnchorTypes (reeks van nummering)
nummering van alle AnchorTypes die een speciaal object TextContent ondersteunen.
TextWrap (Enum)
bepaalt de tekstomloop rondom een object TextContent (standaardwaarden die overeenkomen met de nummering van com.sun.star.text.WrapTextMode).

De objecten TextContent delen ook enkele methoden - in het bjzonder die voor het maken, invoegen en verwijderen van objecten.

  • Een nieuw object TextContent wordt gemaakt met behulp van de methode createInstance van het documentobject.
  • Een object wordt ingevoegd met behulp van de methode insertTextContent van het tekstobject.
  • objecten TextContent worden verwijderd met behulp van de methode removeTextContent.

U vindt een aantal voorbeelden die deze methoden gebruiken in de volgende gedeelten.

Tabellen

Het volgende voorbeeld maakt een tabel met behulp van de methode createInstance, zoals eerder beschreven.

Dim Doc As Object
Dim Tabel As Object
Dim Cursor As Object
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor()
 
Tabel = Doc.createInstance("com.sun.star.text.TextTable")
Tabel.initialize(5, 4)
 
Doc.Text.insertTextContent(Cursor, Tabel, False)

Indien gemaakt wordt de tabel ingesteld tot het benodigde aantal rijen en kolommen met behulp van een aanroep initialize en dan ingevoegd in het tekstdocument met behulp van insertTextContent.

Zoals kan worden gezien in het voorbeeld, verwacht de methode insertTextContent niet alleen dat het object Content wordt ingevoegd, maar ook twee andere parameters:

  • een object Cursor wat de positie voor invoegen bepaalt
  • een Booleaanse variabele die specificeert of het object Content de huidige selectie van de cursor moet vervangen (waarde True) of moet worden ingevoegd vóór de huidige selectie in de tekst False
Documentation note.png VBA : Bij het maken en invoegen van tabellen in een tekstdocument worden objecten, overeenkomstig die welke beschikbaar zijn in VBA, gebruikt in Apache OpenOffice BASIC: Het documentobject en een object TextCursor in Apache OpenOffice BASIC of het object Range als de VBA-component. Waar de methode Document.Tables.Add de taak op zich neemt van het maken en instellen van de tabel in VBA, wordt dit in Apache OpenOffice BASIC gemaakt, overeenkomstig het vorige voorbeeld, met gebruik van createInstance, geïnitialiseerd en ingevoegd in het document door middel van insertTextContent.


De ingevoegde tabel in een tekstdocument kan worden vastgesteld met behulp van een eenvoudige lus. De methode van getTextTables() van het tekstdocumentobject wordt voor dit doel gebruikt:

Dim Doc As Object
Dim TekstTabellen As Object
Dim Tabel As Object
Dim I As Integer
Doc = ThisComponent
TekstTabellen = Doc.getTextTables()
For I = 0 to TekstTabellen.count - 1
 
   Tabel = TekstTabellen(I)
   ' Tabel bewerken
 
Next I
Documentation note.png Teksttabellen zijn in Apache OpenOffice beschikbaar via de lijst TextTables van het documentobject. Het voorgaande voorbeeld toont hoe een teksttabel kan worden gemaakt. De opties voor toegang tot de teksttabellen worden beschreven in het volgende gedeelte.

Tabellen bewerken

Een tabel bestaat uit individuele rijen. Op hun beurt bevatten zij de verschillende cellen. Strikt gesproken zijn er geen tabelkolommen in Apache OpenOffice. Deze worden impliciet geproduceerd door de rijen (één onder de ander) naast elkaar te plaatsen. Om de toegang tot tabellen eenvoudiger te maken, verschaft Apache OpenOffice echter enkele methoden die werken met gebruik van kolommen. Deze zijn handig als er geen cellen zijn samengevoegd in de tabel.

Laten we eerst eens de eigenschappen van de tabel zelf nemen. Deze worden gedefinieerd in de service com.sun.star.text.TextTable. Hier is een lijst van de meest belangrijke eigenschappen van het tabel-object:

BackColor (Long)
kleur van de achtergrond van de tabel.
BottomMargin (Long)
ondermarge in 100-en van een millimeter.
LeftMargin (Long)
linkermarge in 100-en van een millimeter.
RightMargin (Long)
rechtermarge in 100-en van een millimeter.
TopMargin (Long)
bovenmarge in 100-en van een millimeter.
RepeatHeadline (Boolean)
tabelkop wordt herhaald op elke pagina.
Width (Long)
absolute breedte van de tabel in 100-en van een millimeter.

Rijen

Een tabel bevat een lijst op opgenomen rijen. Het volgende voorbeeld toont hoe de rijen van een tabel kan worden teruggevonden en opgemaakt.

Dim Doc As Object
Dim Tabel As Object
Dim Cursor As Object
Dim Rijen As Object
Dim Rij As Object
Dim I As Integer
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor()
 
Tabel = Doc.createInstance("com.sun.star.text.TextTable")
Tabel.initialize(5, 4)
 
Doc.Text.insertTextContent(Cursor, Tabel, False)
Rijen = Tabel.getRows
For I = 0 To Rijen.getCount() - 1
   Rij = Rijen.getByIndex(I)
   Rij.BackColor = &HFF00FF
Next

Het voorbeeld maakt eerst een lijst die alle rijen bevat met behulp van een aanroep Tabel.getRows. De methoden getCount en getByIndex staan toe dat de lijst verder wordt verwerkt en behoort tot de interface com.sun.star.table.XtableRows. De methode getByIndex geeft een rij-object terug dat de service com.sun.star.text.TextTableRow ondersteunt.

Hier zijn de centrale methoden van de interface com.sun.star.table.XtableRows:

getByIndex(Integer)
geeft een object Rij terug voor de gespecificeerde index.
getCount()
geeft het aantal objecten Rij terug.
insertByIndex(Index, Aantal)
voegt Aantal rijen aan de tabel toe vanaf de positie Index.
removeByIndex(Index, Aantal)
verwijdert Aantal rijen uit de tabel van af de positie Index.

Terwijl de methoden getByIndex en getCount beschikbaar zijn in alle tabellen, kunnen de methoden insertByIndex en removeByIndex alleen worden gebruikt in tabellen die geen samengevoegde cellen bevatten.

De service com.sun.star.text.TextTableRow verschaft de volgende eigenschappen:

BackColor (Long)
kleur van de achtergrond van de rij.
Height (Long)
hoogte van de lijn in 100-en van een millimeter.
IsAutoHeight (Boolean)
tabelhoogte wordt dynamisch aangepast aan de inhoud.
VertOrient (const)
verticale oriëntatie van het tekstkader — details over de verticale oriëntatie van de tekst binnen de tabel (waarden die overeenkomen met com.sun.star.text.VertOrientation)

Kolommen

Kolommen worden benaderd op dezelfde wijze als rijen, met gebruik van de methoden getByIndex, getCount, insertByIndex en removeByIndex op het object Column, dat wordt bereikt via getColumns. Zij kunnen echter alleen worden gebruikt in tabellen die geen samengevoegde cellen bevatten. Cellen kunnen niet per kolom worden opgemaakt in Apache OpenOffice BASIC. De methode voor het opmaken van individuele tabelcellen moet wordne gebruikt om dat te doen.

Cellen

Elke cel van een document in Apache OpenOffice heeft een unieke naam. Als de cursor van Apache OpenOffice in a cel staat, dan kan de naam van die cel worden gezien in de statusbalk. De cel linksboven wordt meestal A1 genoemd en de onderste rij rechts is gewoonlijk genaamd Xn, waar X staat voor de letter(s) van de kolomkop en n voor het getal van de laatste rij. De celobjecten zijn beschikbaar via de methode getCellByName() van het tabelobject.

Het volgende voorbeeld toont een lus die door alle cellen van de tabel gaat en het corresponderende rij- en kolomnummer in de cel invoert.

Dim Doc As Object
Dim Tabel As Object
Dim Cursor As Object
Dim Rijen As Object
Dim RijIndex As Integer
Dim Kolommen As Object
Dim KolIndex As Integer
Dim CelNaam As String
Dim Cel As Object
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor()
 
Tabel = Doc.createInstance("com.sun.star.text.TextTable")
Tabel.initialize(5, 4)
 
Doc.Text.insertTextContent(Cursor, Tabel, False)
 
Rijen = Tabel.getRows
Kolommen = Tabel.getColumns
 
For RijIndex = 1 To Rijen.getCount()
   For KolIndex = 1 To Kolommen.getCount()
      CelNaam = Chr(Asc("A") - 1 + KolIndex) & RijIndex
      Cel = Tabel.getCellByName(CelNaam)
      Cel.String = "rij: " & CStr(RijIndex) + ", kolom: " & CStr(KolIndex)
   Next
Next

Een tabelcel is vergelijkbaar met standaard tekst. Het ondersteunt de interface createTextCursor voor het maken van een geassocieerd object TextCursor.

CelCursor = Cel.createTextCursor()

Alle opmaakopties voor individuele tekens en alinea's zijn daardoor automatisch beschikbaar.

Het volgende voorbeeld zoekt door alle tabellen van een tekstdocument en past de opmaak Rechts uitlijnen toe op alle cellen met numerieke waarde, door middel van de corresponderende eigenschap van de alinea.

Dim Doc As Object
Dim TekstTabellen As Object
Dim Tabel As Object
Dim CelNamen
Dim Cel As Object
Dim CelCursor As Object
Dim I As Integer
Dim J As Integer
 
Doc = ThisComponent
TekstTabellen = Doc.getTextTables()
 
For I = 0 to TekstTabellen.count - 1
   Tabel = TekstTabellen(I)
   CelNamen = Tabel.getCellNames()
 
   For J = 0 to UBound(CelNamen)
      Cel = Tabel.getCellByName(CelNamen(J))
      If IsNumeric(Cel.String) Then
         CelCursor = Cel.createTextCursor()
         CelCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
      End If
   Next
Next

Het voorbeeld maakt een lijst TekstTabellen, die alle tabellen bevat, die worden doorlopen in een lus. Apache OpenOffice maakt dan een lijst van de geassocieerde celnamen voor elk van deze tabellen. Zij worden op hun beurt doorlopen in een lus. Als een cel een numerieke waarde bevat, dan verandert het voorbeeld de opmaak overeenkomstig. Om dit te doen, maakt het eerst een object TextCursor dat refereert aan de inhoud van de tabelcel en past dan de alinea-eigenschappen van de tabelcel aan.

Tekstframes

Tekstframes worden verondersteld objecten TextContent te zijn, net als tabellen en afbeeldingen. Zij mogen essentieel bestaan uit standaard tekst, maar kunnen worden geplaatst op elke positie op elke pagina en worden niet opgenomen in de tekststroom.

Net als met alle objecten TextContent wordt ook met tekstframes een onderscheid gemaakt tussen het echte maken en het invoegen in het document.


Dim Doc As Object
Dim TekstTabellen As Object
Dim Cursor As Object
Dim Frame As Object
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor()
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
Doc.Text.insertTextContent(Cursor, Frame, False)

Het tekstframe wordt gemaakt met gebruik van de methode createInstance van het document-object. Het op deze manier gemaakte tekstframe kan dan worden ingevoegd in het document met behulp van de methode insertTextContent van het object Text. De naam van de juiste service com.sun.star.text.TextFrame zou moeten worden gespecificeerd, om dit zo te doen.

De positie voor het invoegen van het tekstframe wordt bepaald door een object Cursor, wat ook wordt uitgevoerd bij het invoegen.

Documentation note.png VBA : Tekstframes zijn componenten van Apache OpenOffice voor het positie-frame dat wordt gebruikt in Word. Waar VBA de methode Document.Frames.Add voor dit doel gebruikt, wordt het maken in Apache OpenOffice uitgevoerd met behulp van de voorgaande procedure met de hulp van zowel een TextCursor als de methode createInstance van het document.


Objecten Tekstframe verschaffen een bereik aan eigenschappen, waarmee de positie en het gedrag van het kader kan worden beïnvloed. De meeste van deze eigenschappen worden gedefinieerd in de service com.sun.star.text.BaseFrameProperties, die ook wordt ondersteund door elke service TextFrame. De centrale eigenschappen zijn:

BackColor (Long)
kleur van de achtergrond van het frame.
BottomMargin (Long)
ondermarge in 100-en van een millimeter.
LeftMargin (Long)
linker marge in 100-en van een millimeter.
RightMargin (Long)
rechter marge in 100-en van een millimeter.
TopMargin (Long)
bovenmarge in 100-en van een millimeter.
Height (Long)
hoogte van tekstframe in 100-en van een millimeter.
Width (Long)
breedte van tekstframe in 100-en van een millimeter.
HoriOrient (const)
horizontale oriëntatie van het tekstframe (overeenkomend met com.sun.star.text.HoriOrientation).
VertOrient (const)
verticale oriëntatie van het tekstframe (overeenkomend met com.sun.star.text.VertOrientation).

Het volgende voorbeeld maakt een tekstframe waarbij het de hiervoor beschreven eigenschappen gebruikt:

Dim Doc As Object
Dim TekstTabellen As Object
Dim Cursor As Object
Dim Frame As Object
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor()
Cursor.gotoNextWord(False)
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
 
Frame.Width = 3000
Frame.Height = 1000
Frame.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
Frame.TopMargin = 0
Frame.BottomMargin = 0
Frame.LeftMargin = 0
Frame.RightMargin = 0
Frame.BorderDistance = 0
Frame.HoriOrient = com.sun.star.text.HoriOrientation.NONE
Frame.VertOrient = com.sun.star.text.VertOrientation.LINE_TOP
 
Doc.Text.insertTextContent(Cursor, Frame, False)

Het voorbeeld maakt een TextCursor als de markering voor het invoegen voor het tekstframe. Dit wordt geplaatst tussen het eerste en tweede woord van de tekst. Het tekstframe wordt gemaakt met behulp van Doc.createInstance. De eigenschappen van de objecten Tekstframe worden ingesteld op de gewenste startwaarden.

De interactie tussen de eigenschappen van AnchorType (van de service TextContent ) en VertOrient>/tt> (van de service <tt>BaseFrameProperties) zouden hier moeten opvallen. AnchorType ontvangt de waarde AS_CHARACTER. Het tekstframe wordt daarom direct in de tekststroom ingevoegd en gedraagt zich als een teken. Het kan, bijvoorbeeld, worden verplaatst naar de volgende regel als een regeleinde voorkomt. De waarde LINE_TOP van de eigenschap VertOrient zorgt er voor dat de bovenrand van het tekstframe op dezelfde hoogte staat als de bovenrand van het teken.

Als de initialisatie voltooid is, wordt het tekstframe tenslotte ingevoegd in het tekstdocument met behulp van een aanroep van insertTextContent.

De gebruiker gebruikt de TextCursor, welke al diverse malen is genoemd en ook beschikbaar is voor tekstframes, om de inhoud van een tekstframe te bewerken.

Dim Doc As Object
Dim TekstTabellen As Object
Dim Cursor As Object
Dim Frame As Object
Dim FrameCursor As Object
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor()
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
 
Frame.Width = 3000
Frame.Height = 1000
 
Doc.Text.insertTextContent(Cursor, Frame, False)
 
FrameCursor = Frame.createTextCursor()
FrameCursor.charWeight = com.sun.star.awt.FontWeight.BOLD
FrameCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.CENTER
FrameCursor.String = "Dit is een kleine Test!"

Het voorbeeld maakt een tekstframe, voegt dit in het huidige document in en opent een TextCursor voor het tekstframe. Deze cursor wordt gebruikt om het lettertype van het frame op type Vet in te stellen en de oriëntatie van de alinea op gecentreerd. Aan het tekstframe wordt tenslotte de tekenreeks “Dit is een kleine test!” toegewezen.

Tekstvelden

Tekstvelden zijn objecten TextContent omdat zij aanvullende logische uitbreiding verschaffen naast pure tekst. Tekstvelden kunnen worden ingevoegd in een tekstdocument met behulp van dezelfde methoden als die welke worden gebruikt voor andere objecten TextContent:

Dim Doc As Object
Dim DatumTijdVeld As Object
Dim Cursor As Object
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor()
 
DatumTijdVeld = Doc.createInstance("com.sun.star.text.textfield.DateTime")
DatumTijdVeld.IsFixed = False
DatumTijdVeld.IsDate = True
Doc.Text.insertTextContent(Cursor, DatumTijdVeld, False)

Het voorbeeld voegt een tekstveld in met de huidige datum aan het begin van het huidige tekstdocument. De waarde True van de eigenschap IsDate resulteert er in dat alleen de datum en niet de tijd wordt weergegeven. De waarde False voor IsFixed zorgt er voor dat de datum automatisch wordt ververst als het document wordt geopend.

Documentation note.png VBA : Terwijl het type van een veld in VBA wordt gespecificeerd door een parameter van de methode Document.Fields.Add, definieert de naam van de service die verantwoordelijk is voor betreffende type dat in Apache OpenOffice BASIC.


Documentation note.png StarOffice 5 : In het verleden werd toegang tot tekstvelden verkregen met behulp van een groot aantal methoden die Apache OpenOffice beschikbaar maakte in het oude object Selection (bijvoorbeeld InsertField, DeleteUserField, SetCurField).


In Apache OpenOffice worden de velden beheerd door middel van een object-georiënteerd concept. Om een tekstveld te maken, moet eerst een tekstveld van het betreffende type worden gemaakt en geïnitialiseerd met behulp van de vereiste eigenschappen. Het tekstveld wordt dan ingevoegd in het document met behulp van de methode insertTextContent. Een corresponderende brontekst kan worden bekeken in het voorgaande voorbeeld. De meest belangrijke veldtypen en hun eigenschappen worden beschreven in de volgende gedeelten.

In aanvulling op het invoegen van tekstvelden, kan ook het zoeken in een document naar die velden een belangrijke taak zijn. Het volgende voorbeeld toont hoe alle velden van een tekstdocument kunnen worden doorlopen in een lus en gecontroleerd op hun relevante type.


Dim Doc As Object
Dim TekstVeldEnum As Object
Dim TekstVeld As Object
Dim I As Integer
 
Doc = ThisComponent
 
TekstVeldEnum = Doc.getTextFields.createEnumeration
 
While TekstVeldEnum.hasMoreElements()
 
   TekstVeld = TekstVeldEnum.nextElement()
 
   If TekstVeld.supportsService("com.sun.star.text.textfield.DateTime") Then
      MsgBox "Datum/tijd"
   ElseIf TekstVeld.supportsService("com.sun.star.text.textfield.Annotation") Then
      MsgBox "Notitie"
   Else
      MsgBox "Onbekend"
   End If
 
Wend

Het startpunt om de aanwezige tekstvelden vast te stellen is de lijst TekstVelden van het documentobject. Het voorbeeld maakt een object Enumeration op basis van die lijst, waarmee alle tekstvelden op hun beurt kunnen worden bevraagd in een lus. De gevonden tekstvelden worden gecontroleerd op de ondersteunde service door middel van de methode supportsService. Als het veld bewijst een veld met datum/tijd te zijn of een Notitie, dan wordt het corresponderende veldtype weergegeven in een berichtenvenster. Als, aan de andere kant, het voorbeeld een ander soort veld tegenkomt, dan geeft het de informatie “Onbekend” weer.

Hieronder vindt u een lijst van de meest belangrijke tekstvelden en hun geassocieerde eigenschappen. Een complete lijst van alle tekstvelden wordt verschaft via de API referentie in de module com.sun.star.text.textfield. (Bij opsommen van de service-naam van een tekstveld, zouden Hoofd- en kleine letters in acht moeten worden genomen in Apache OpenOffice BASIC, zoals in het voorgaande voorbeeld.)


Aantal pagina's, woorden en tekens

De tekstvelden

geven het aantal pagina's, woorden of tekens van een tekst weer. Zij ondersteunen de volgende eigenschap:

NumberingType (const)
opmaak voor nummering (richtlijnen overeenkomend met constanten van com.sun.star.style.NumberingType ).

Huidige pagina

Het nummer van de huidige pagina kan worden ingevoegd in een document met behulp van het tekstveld com.sun.star.text.textfield.PageNumber. De volgende eigenschappen kunnen worden gespecificeerd:

NumberingType (const)
getalopmaak (richtlijnen overeenkomend met constanten uit com.sun.star.style.NumberingType).
Offset (short)
verschuiving toegevoegd aan het aantal pagina's (negatieve specificatie is ook mogelijk).

Het volgende voorbeeld toont hoe het aantal pagina's kan worden ingevoegd in de voettekst van een document.

Dim Doc As Object
Dim DatumTijdVeld As Object
Dim PaginaOpmaakprofielen As Object
Dim StdPagina As Object
Dim VoetCursor As Object
Dim PaginaNummer As Object
 
Doc = ThisComponent
 
PaginaNummer = Doc.createInstance("com.sun.star.text.textfield.PageNumber")
PaginaNummer.NumberingType = com.sun.star.style.NumberingType.ARABIC
 
PaginaOpmaakprofielen = Doc.StyleFamilies.getByName("PageStyles")
 
StdPagina = PaginaOpmaakprofielen("Standaard")
StdPagina.FooterIsOn = True
 
VoetCursor = StdPagina.FooterTextLeft.Text.createTextCursor()
StdPagina.FooterTextLeft.Text.insertTextContent(VoetCursor, PaginaNummer, False)

Het voorbeeld maakt eerst een tekstveld dat de service com.sun.star.text.textfield.PageNumber ondersteunt. Omdat de regels voor de koptekst en voettekst zijn gedefinieerd als deel van het pagina-opmaakprofiel van Apache OpenOffice, wordt dat eerst vastgesteld met behulp van de lijst van alle PageStyles.

Om te zorgen dat de regel voor de voettekst zichtbaar is, wordt de eigenschap FooterIsOn ingesteld op True. Het tekstveld wordt dan ingevoegd in het document met behulp van het geassocieerde tekstobject van de regel voor de voettekst van de linkerpagina.

Notities

Velden Notities (com.sun.star.text.TextField.Annotation) kunnen worden bekeken door middel van een klein geel symbool in de tekst. Klikken op dit symbool opent een tekstveld, waarin een opmerking over het huidige punt in de tekst kan worden opgenomen. Een veld Notitie heeft de volgende eigenschappen.

Author (String)
naam van de auteur.
Content (String)
tekst van de notitie.
Date (Date)
datum waarop de notitie is geschreven.

Datum / Tijd

Een veld datum / tijd (com.sun.star.text.textfield.DateTime) geeft de huidige datum of de huidige tijd weer. Het ondersteunt de volgende eigenschappen:

IsFixed (Boolean)
indien True blijven de details voor de tijd van de invoeging onveranderd, indien False worden deze, elke keer als document wordt geopend, ververst.
IsDate (Boolean)
indien True geeft het veld de huidige datum weer, anders de huidige tijd.
DateTimeValue (struct)
huidige inhoud van het veld (structuur van com.sun.star.util.DateTime)
NumberFormat (const)
opmaak waarin de tijd of datum wordt weergegeven.

Naam hoofdstuk / nummer

De naam van het huidige hoofdstuk is beschikbaar via een tekstveld van het type com.sun.star.text.textfield.Chapter. De vorm kan worden gedefinieerd met behulp van twee eigenschappen.

ChapterFormat (const)
stelt vast of de naam of nummer van het hoofdstuk moet worden weergegeven (overeenkomend met com.sun.star.text.ChapterFormat)
Level (Integer)
stelt het niveau voor het hoofdstuk vast waarvan de naam en/of nummer moet worden weergegeven. De waarde 0 staat voor het hoogst beschikbare niveau.

Bladwijzers

Bladwijzers (Service com.sun.star.text.Bookmark) zijn objecten TextContent. Bladwijzers worden gemaakt en ingevoegd via het reeds eerder beschreven concept:

Dim Doc As Object
Dim Bladwijzer As Object
Dim Cursor As Object
 
Doc = ThisComponent
 
Cursor = Doc.Text.createTextCursor()
 
Bladwijzer = Doc.createInstance("com.sun.star.text.Bookmark")
Bladwijzer.Name = "Mijn bladwijzers"
Doc.Text.insertTextContent(Cursor, Bladwijzer, True)

Het voorbeeld maakt een Cursor die de invoegpositie van de bladwijzer aangeeft en dan het echte object Bladwijzer (Bookmark). De bladwijzer wordt dan een naam toegewezen en wordt op de cursorpositie in het document ingevoegd via insertTextContent.

Toegang tot de Bladwijzers van een tekst wordt verkregen via een lijst genaamd Bookmarks. Toegang tot de bladwijzers kan ofwel worden verkregen via hun nummer dan wel hun naam.

Het volgende voorbeeld toont hoe een bladwijzer kan worden gevonden binnen een tekst en een tekst ingevoegd op zijn positie.

Dim Doc As Object
Dim Bladwijzer As Object
Dim Cursor As Object
 
Doc = ThisComponent
 
Bladwijzer = Doc.Bookmarks.getByName("Mijn bladwijzers")
 
Cursor = Doc.Text.createTextCursorByRange(Bookmark.Anchor)
Cursor.String = "Hier staat de bladwijzer"

In dit voorbeeld wordt de methode getByName gebruikt om de gewenste bladwijzer te vinden door middel van zijn naam. De aanroep createTextCursorByRange maakt dan een Cursor, welke wordt geplaatst op de plaats van verankering van de bladwijzer. De cursor voegt dan de gewenste tekst in op dit punt.


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