Difference between revisions of "NL/Documentation/BASIC Guide/StarDesktop"

From Apache OpenOffice Wiki
Jump to: navigation, search
m (Vervangen van de inhoud van het documentvenster)
(Document Objects)
Line 171: Line 171:
 
De aanroep maakt een leeg document voor {{OOo}} Writer.
 
De aanroep maakt een leeg document voor {{OOo}} Writer.
  
== Document Objects ==
+
== Documentobjecten ==
  
The <tt>loadComponentFromURL</tt> function introduced in the previous section returns a document object. This supports the <idl>com.sun.star.document.OfficeDocument</idl> service, which in turn provides two central interfaces:  
+
De in het voorgaande gedeelte geïntroduceerde functie <tt>loadComponentFromURL</tt> geeft een documentobject terug. Die ondersteunt de service <idl>com.sun.star.document.OfficeDocument</idl>, welke op zijn beurt twee centrale interfaces verschaft:
  
* The <idl>com.sun.star.frame.XStorable</idl> interface, which is responsible for saving documents.
+
* De interface <idl>com.sun.star.frame.XStorable</idl>, die verantwoordelijk is voor het opslaan van documenten.
* The <idl>com.sun.star.view.XPrintable</idl> interface, which contains the methods for printing documents.  
+
* De interface <idl>com.sun.star.view.XPrintable</idl>, die de methoden bevat voor het afdrukken van documenten.  
  
=== Saving and Exporting Documents ===
+
=== Opslaan en exporteren van documenten ===
  
{{OOo}} documents are saved directly through the document object. The <tt>store</tt> method of the <idl>com.sun.star.frame.XStorable</idl> interface is available for this purpose:
+
{{OOo}} documenten worden direct opgeslagen via het documentobject. De methode <tt>store</tt> van de interface <idl>com.sun.star.frame.XStorable</idl> is voor dit doel beschikbaar:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 186: Line 186:
 
</source>
 
</source>
  
This call functions provided that the document has already been assigned a memory space. This is not the case for new documents. In this instance, the <tt>storeAsURL</tt> method is used. This method is also defined in <idl>com.sun.star.frame.XStorable</idl> and can be used to define the location of the document:  
+
Deze aanroep werkt alleen als aan het document reeds geheugenruimte is toegewezen. Dit is niet het geval voor nieuwe documenten. In dat geval wordt de methode <tt>storeAsURL</tt> gebruikt. Deze methode wordt ook gedefinieerd in <idl>com.sun.star.frame.XStorable</idl> en kan worden gebruikt om de locatie van het document te bepalen:  
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 196: Line 196:
 
</source>
 
</source>
  
In addition to the preceding methods, <idl>com.sun.star.frame.XStorable</idl> also provides some help methods which are useful when saving documents. These are:
+
In aanvulling op de voorgaande methoden geeft <idl>com.sun.star.frame.XStorable</idl> ook enige hulpmethoden welke handig zijn bij het opslaan van documenten. Deze zijn:
  
;<tt>hasLocation()</tt>:specifies whether the document has already been assigned a URL.
+
;<tt>hasLocation()</tt>: specificeert of het document al een URL heeft toegewezen heeft gekregen.
;<tt>isReadonly()</tt>:specifies whether a document has read-only protection.
+
;<tt>isReadonly()</tt>: specificeert of een document beveiliging Alleen-lezen  heeft.
;<tt>isModified()</tt>:specifies whether a document has been modified since it was last saved.
+
;<tt>isModified()</tt>: specificeert of een document is gewijzigd sinds de laatste keer dat het was opgeslagen.
  
The code for saving a document can be extended by these options so that the document is only saved if the object has actually been modified and the file name is only queried if it is actually needed:
+
De code voor het opslaan van een document kan worden uitgebreid met deze opties zodat het document alleen wordt opgeslagen indien het echt gewijzigd is en de bestandsnaam alleen wordt gevraagd als het echt nodig is:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 214: Line 214:
 
</source>
 
</source>
  
The example first checks whether the relevant document has been modified since it was last saved. It only continues with the saving process if this is the case. If the document has already been assigned a URL and is not a read-only document, it is saved under the existing URL. If it does not have a URL or was opened in its read-only status, it is saved under a new URL.
+
Het voorbeeld controleert eerst of het betreffende document is gewijzigd sinds de laatste keer dat het was opgeslagen. Het gaat alleen verder met het proces van opslaan als dat het geval is. Als het document al een URL heeft en niet een Alleen-lezen-document is, wordt het opgeslagen onder de bestaande URL. Als het geen URL heeft of was geopend in de status Alleen-lezen wordt het opgeslagen onder een nieuwe URL.
  
=== storeAsURL Method Options ===
+
=== Methode opties storeAsURL ===
  
As with the <tt>loadComponentFromURL</tt> method, some options can also be specified in the form of a <tt>PropertyValue</tt> data field using the <tt>storeAsURL</tt> method. These determine the procedure {{OOo}} uses when saving a document. <tt>storeAsURL</tt> provides the following options:
+
Net zoals met de methode <tt>loadComponentFromURL</tt> kunnen sommige opties ook worden gespecificeerd in de vorm van een gegevensveld <tt>PropertyValue</tt> met behulp van de methode <tt>storeAsURL</tt>. Deze bepalen de procedure die {{OOo}} gebruikt bij het opslaan van een document. <tt>storeAsURL</tt> verschaft de volgende opties:
  
;<tt>CharacterSet (String)</tt>:defines which set of characters a document is based on.
+
;<tt>CharacterSet (String)</tt>:definieert op welke tekenset een document is gebaseerd.
;<tt>FilterName (String)</tt>:specifies a special filter for the <tt>loadComponentFromURL</tt> function. The filter names available are defined in the <tt>\share\config\registry\instance\org\openoffice\office\TypeDetection.xml</tt> file.
+
;<tt>FilterName (String)</tt>: specificeert een speciaal filter voor de functie <tt>loadComponentFromURL</tt>. De beschikbare filternamen zijn gedefinieerd in het bestand <tt>\share\config\registry\instance\org\openoffice\office\TypeDetection.xml</tt>.
;<tt>FilterData (String)</tt>:defines additional options for filters.
+
;<tt>FilterData (String)</tt>: definieert aanvullende opties voor filters.
;<tt>FilterOptions (String)</tt>:defines additional options (used by old filters).
+
;<tt>FilterOptions (String)</tt>: definieert aanvullende opties (gebruikt door oude filters).
;<tt>Overwrite (Boolean)</tt>:allows a file which already exists to be overwritten without a query.
+
;<tt>Overwrite (Boolean)</tt>: maakt het mogelijk een reeds bestaand bestand te overschrijven zonder een query.
;<tt>Password (String)</tt>:transfers the password for a protected file.
+
;<tt>Password (String)</tt>: draagt het wachtwoord over voor een beveiligd bestand.
;<tt>Unpacked (Boolean)</tt>:saves the document (not compressed) in sub-directories.
+
;<tt>Unpacked (Boolean)</tt>: slaat het document op (niet gecomprimeerd) in sub-mappen.
:The possibility to store documents in unpacked way is not currently supported, the "Unpacked" property is just ignored, see {{Bug|64364}}.
+
:De mogelijkheid om documenten op te slaan op een niet-ingepakte manier wordt momenteel niet ondersteund, de eigenschap "Unpacked" wordt gewoon genegeerd, bekijk {{Bug|64364}}.
  
The following example shows how the <tt>Overwrite</tt> option can be used in conjunction with <tt>storeAsURL</tt>:
+
Het volgende voorbeeld toont hoe de optie <tt>Overwrite</tt> kan worden gebruikt in samenhang met <tt>storeAsURL</tt> :
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 235: Line 235:
 
Dim FileProperties(0) As New com.sun.star.beans.PropertyValue
 
Dim FileProperties(0) As New com.sun.star.beans.PropertyValue
 
Dim Url As String
 
Dim Url As String
' ... Initialize Doc  
+
' ... Initialiseren van Doc  
  
 
Url = "file:///c:/test3.odt"
 
Url = "file:///c:/test3.odt"
Line 243: Line 243:
 
</source>
 
</source>
  
The example then saves <tt>Doc</tt> under the specified file name if a file already exists under the name.
+
Het voorbeeld slaat <tt>Doc</tt> dan op onder de gespecificeerde bestandsnaam als er al een bestand bestaat met die naam.
  
=== Printing Documents ===
+
=== Documenten afdrukken ===
  
Similar to saving, documents are printed out directly by means of the document object. The <tt>Print</tt> method of the <idl>com.sun.star.view.Xprintable</idl> interface is provided for this purpose. In its simplest form, the print call is:
+
net zoals met opslaan, worden documenten direct afgedrukt door middel van het document-object. De methode <tt>Print</tt> van de interface <idl>com.sun.star.view.Xprintable</idl> is voor dit doel aanwezig. In zijn eenvoudigste vorm is de aanroep voor print:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 255: Line 255:
 
</source>
 
</source>
  
As in the case of the <tt>loadComponentFromURL</tt> method, the Dummy parameter is a <tt>PropertyValue</tt> data field through which {{OOo}} can specify several options for printing.
+
Net als in het geval van de methode <tt>loadComponentFromURL</tt> is de parameter Dummy een gegevensveld <tt>PropertyValue</tt> waardoor {{OOo}} diverse opties voor afdrukken kan specificeren.
  
=== The options of the print method ===
+
=== De opties van de methode print ===
  
The <tt>print</tt> method expects a <tt>PropertyValue</tt> data field as a parameter, which reflects the settings of the print dialog of {{OOo}}:  
+
De methode <tt>print</tt> verwacht een gegevensveld <tt>PropertyValue</tt> als een parameter, die de instellingen van het dialoogvenster voor afdrukken in {{OOo}} weergeeft:  
  
;<tt>CopyCount (Integer)</tt>:specifies the number of copies to be printed.
+
;<tt>CopyCount (Integer)</tt>: specificeert het aantal af te drukken kopieën.
;<tt>FileName (String)</tt>:prints the document in the specified file.
+
;<tt>FileName (String)</tt>: drukt het document af naar het gespecificeerde bestand.
;<tt>Collate (Boolean)</tt>:advises the printer to collate the pages of the copies.
+
;<tt>Collate (Boolean)</tt>: adviseert de printer om de pagina's van de kopieën te verzamelen.
;<tt>Sort (Boolean)</tt>:sorts the pages when printing out several copies (<tt>CopyCount</tt> > 1).
+
;<tt>Sort (Boolean)</tt>: sorteert de pagina's bij het afdrukken van verschillende kopieën (<tt>CopyCount</tt> > 1).
;<tt>Pages (String)</tt>:contains the list of the pages to be printed (syntax as specified in print dialog).
+
;<tt>Pages (String)</tt>: bevat de lijst van af te drukken pagina's (syntaxis zoals gespecificeerd in het dialoogvenster Afdrukken).
;<tt>Wait (Boolean)</tt>:if set to True the print method will return ''after'' the job is stored on the waiting list for the printer. Use this option if you want to close the document after print.
+
;<tt>Wait (Boolean)</tt>: indien ingesteld op True zal de methode print terugkeren ''nadat'' de taak is opgeslagen in de wachtlijst voor de printer. Gebruik deze optie als u het document na het afdrukken wilt sluiten.
  
The following example shows how several pages of a document can be printed out using the <tt>Pages</tt> option:  
+
Het volgende voorbeeld toont hoe meerdere pagina's van een document kunnen worden afgedrukt met behulp van de optie <tt>Pages</tt> :  
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 281: Line 281:
 
</source>
 
</source>
  
=== Printer selection and settings ===
+
=== Printerselectie en instellingen ===
  
The <idl>com.sun.star.view.XPrintable</idl> interface provides the <tt>Printer</tt> property, which selects the printer. This property receives a <tt>PropertyValue</tt> data field with the following settings:  
+
De interface <idl>com.sun.star.view.XPrintable</idl> verschaft de eigenschap <tt>Printer</tt>, die de printer selecteert. Deze eigenschap ontvangt een gegevensveld <tt>PropertyValue</tt> met de volgende instellingen:  
  
;<tt>Name (String)</tt>:specifies the name of printer.
+
;<tt>Name (String)</tt>: specificeert de naam van de printer.
;<tt>PaperOrientation (Enum)</tt>:specifies the paper orientation (<idl>com.sun.star.view.PaperOrientation.PORTRAIT</idl> value for portrait format, <idl>com.sun.star.view.PaperOrientation.LANDSCAPE</idl> for landscape format).
+
;<tt>PaperOrientation (Enum)</tt>: specificeert de richting van het papier ( waarde <idl>com.sun.star.view.PaperOrientation.PORTRAIT</idl> voor indeling Staand, waarde <idl>com.sun.star.view.PaperOrientation.LANDSCAPE</idl> voor indeling Liggend).
;<tt>PaperFormat (Enum)</tt>:specifies the paper format (for example, <idl>com.sun.star.view.PaperFormat.A4</idl> for DIN A4 or <idl>com.sun.star.view.PaperFormat.Letter</idl> for US letters).
+
;<tt>PaperFormat (Enum)</tt>: specificeert het formaat van het papier (bijvoorbeeld <idl>com.sun.star.view.PaperFormat.A4</idl> voor DIN A4 of <idl>com.sun.star.view.PaperFormat.Letter</idl> voor US-brieven).
;<tt>PaperSize (Size)</tt>:specifies the paper size in hundredths of a millimeter.
+
;<tt>PaperSize (Size)</tt>: specificeert de papiergrootte in honderdsten van een millimeter.
  
The following example shows how a printer can be changed and the paper size set with the help of the <tt>Printer</tt> property.  
+
Het volgende voorbeeld toont hoe een printer kan worden gewijzigd en de afmetingen van het papier worden ingesteld met behulp van de eigenschap <tt>Printer</tt>.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 297: Line 297:
 
Dim PaperSize As New com.sun.star.awt.Size
 
Dim PaperSize As New com.sun.star.awt.Size
  
PaperSize.Width = 20000   ' corresponds to 20 cm
+
PaperSize.Width = 20000   ' komt overeen met 20 cm
PaperSize.Height = 20000  ' corresponds to 20 cm
+
PaperSize.Height = 20000  ' komt overeen met 20 cm
 
PrinterProperties (0).Name="Name"
 
PrinterProperties (0).Name="Name"
PrinterProperties (0).Value="My HP Laserjet"
+
PrinterProperties (0).Value="Mijn HP Laserjet"
 
PrinterProperties (1).Name="PaperSize"
 
PrinterProperties (1).Name="PaperSize"
 
PrinterProperties (1).Value=PaperSize
 
PrinterProperties (1).Value=PaperSize
Line 306: Line 306:
 
</source>
 
</source>
  
The example defines an object named <tt>PaperSize</tt> with the <idl>com.sun.star.awt.Size</idl> type. This is needed to specify the paper size. Furthermore, it creates a data field for two <tt>PropertyValue</tt> entries named <tt>PrinterProperties</tt>. This data field is then initialized with the values to be set and assigned the <tt>Printer</tt> property. From the standpoint of UNO, the printer is not a real property but an imitated one.
+
Het voorbeeld definieert een object genaamd <tt>PaperSize</tt> van het type <idl>com.sun.star.awt.Size</idl>. Dit is nodig om de papierafmeting te specificeren. Verder maakt het een gegevensveld voor twee items <tt>PropertyValue</tt> genaamd <tt>PrinterProperties</tt>. Dit gegevensveld wordt dan geïnitialiseerd met de waarden om te worden ingesteld en toegewezen aan de eigenschap <tt>Printer</tt>. Vanuit het standpunt van UNO is de printer niet een echte eigenschap, maar een geïmiteerde.
 
+
 
   
 
   
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/StarDesktop}}
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/StarDesktop}}
 
{{PDL1}}
 
{{PDL1}}

Revision as of 18:12, 28 January 2013

Book.png


Twee services worden het meest gebruikt bij het werken met documenten:

  • De service com.sun.star.frame.Desktop, die overeenkomt met de kernservice van Apache OpenOffice. Het verschaft de functies voor het frame-object van Apache OpenOffice, waaronder alle documentvensters worden geclassificeerd. Documenten kunnen ook worden gemaakt, geopend en geïmporteerd met deze service.
  • De basis-functionaliteit voor de individuele documentobjecten wordt verschaft door de service com.sun.star.document.OfficeDocument. Dit verschaft de methoden voor opslaan, exporteren en afdrukken van documenten.

De service com.sun.star.frame.Desktop wordt automatisch gemaakt als Apache OpenOffice wordt gestart. Deze service kan worden benaderd door Apache OpenOffice BASIC met globale naam StarDesktop.

De meest belangrijke interface van de StarDesktop is com.sun.star.frame.XComponentLoader. Deze regelt in principe de methode loadComponentFromURL, welke verantwoordelijk is voor het maken, importeren en openen van documenten.

Documentation note.png StarOffice 5 : De naam van het object StarDesktop dateert uit StarOffice 5, waarin alle documentvensters waren ingebed in één algemene toepassing, genaamd StarDesktop. In de huidige versie van Apache OpenOffice wordt niet langer een zichtbare StarDesktop gebruikt. De naam StarDesktop werd echter behouden voor het frame-object van Apache OpenOffice omdat het duidelijk aangeeft dat het een basaal object is voor de gehele toepassing.

Het object StarDesktop object vervangt het object Application van StarOffice 5 dat eerder werd toegepast als bronobject. Echter, anders dan het oude object Application, is StarDesktop primair verantwoordelijk voor het openen van nieuwe documenten. De residente functies in het oude object Application voor het beheren van de on-screen weergave van Apache OpenOffice (bijvoorbeeld: FullScreen,FunctionBarVisible, Height, Width, Top, Visible) worden niet langer gebruikt.


Documentation note.png VBA : Waar het actieve document in Word toegankelijk is via Application.ActiveDocument en in Excel via Application.ActiveWorkbook, is in Apache OpenOffice de StarDesktop verantwoordelijk voor die taak. Het object voor het actieve document is in Apache OpenOffice toegankelijk via de eigenschap StarDesktop.CurrentComponent, of via ThisComponent.


ThisComponent

De globale naam ThisComponent geeft in het algemeen hetzelfde object terug als StarDesktop.CurrentComponent, met één significant voordeel. Als u uitvoert vanuit de BASIC IDE, debuggen of verkennen, dan geeft StarDesktop de BASIC IDE zelf terug. Dat is waarschijnlijk niet wat u wilt. ThisComponent geeft het laatste eerder actieve document terug.

Basisinformatie over documenten in Apache OpenOffice

Bij het werken met documenten van Apache OpenOffice is het handig om enkele basiskwesties van het beheren van documenten in Apache OpenOffice te behandelen. Dit houdt onder meer in: de manier waarop bestandsnamen worden gestructureerd voor Apache OpenOffice documenten, als ook de opmaak waarin bestanden worden opgeslagen.

Bestandsnamen in URL-notatie

Omdat Apache OpenOffice een platform-onafhankelijke toepassing is wordt URL-notatie gebruikt (die onafhankelijk is van enig besturingssysteem), zoals die is gedefinieerd in de Internet Standard RFC 1738 voor bestandsnamen. Standaard bestandsnamen die dit systeem hanteren beginnen met het voorvoegsel (prefix) file:/// gevolgd door het lokale pad. Als de bestandsnaam sub-mappen bevat, dan worden deze gescheiden door één enkele voorwaartse streep, niet door een backslash zoals gebruikelijk is onder Windows. Het volgende pad refereert aan het bestand test.odt in de map doc op de C:-schijf.

file:///C:/doc/test.odt

Apache OpenOffice verschaft de functie ConvertToUrl om lokale bestandsnamen om te zetten naar een URL. Apache OpenOffice heeft de functie ConvertFromUrl om een URL om te zetten naar een lokale bestandsnaam:

MsgBox ConvertToUrl("C:\doc\test.odt") 
  ' levert op file:///C:/doc/test.odt
MsgBox ConvertFromUrl("file:///C:/doc/test.odt")    
  '  levert op (onder Windows) c:\doc\test.odt

Het voorbeeld zet een lokale bestandsnaam om naar een URL en geeft het weer in een berichtenvenster. Vervolgens zet het de URL om naar een lokale bestandsnaam en geeft ook die weer.

De Internet Standard RFC 1738, waarop dit is gebaseerd, staat gebruik toe van de tekens 0-9, a-z en A-Z. Alle andere tekens worden ingevoegd in de URLs als een escape-code (hulpcode). Om dit te doen worden zij omgezet in hun hexadecimale waarde in de UTF-8-tekenset en worden zij voorafgegaan door een percentage-teken. Een spatie in een lokale bestandsnaam, bijvoorbeeld, wordt daarom dan %20 in de URL.

XML-bestandsindeling

Documenten van Apache OpenOffice zijn gebaseerd op de bestandsindeling XML. Op XML gebaseerde bestanden kunnen worden geopend en bewerkt met andere programma's.

Compressie van bestanden

Omdat XML is gebaseerd op standaard tekstbestanden, zijn de resulterende bestanden gewoonlijk zeer groot. Apache OpenOffice comprimeert daarom de bestanden en slaat ze op als een ZIP-bestand. Door middel van een methode optie storeAsURL, kan de gebruiker de originele XML-bestanden direct opslaan. Bekijk Methode optie storeAsURL, hieronder.

Maken, openen en importeren van documenten

Documenten worden geopend, geïmporteerd en gemaakt met behulp van de methode

StarDesktop.loadComponentFromURL(URL, Frame, SearchFlags, FileProperties)

De eerste parameter van loadComponentFromURL specificeert de URL van het geassocieerde bestand.

De tweede parameter, loadComponentFromURL, verwacht een naam voor het frame-object van het venster dat Apache OpenOffice intern aanmaakt voor zijn beheer. Meestal wordt hier de vooraf gedefinieerde naam _blank gespecificeerd en dit maakt zeker dat Apache OpenOffice een nieuw venster aanmaakt.

De gebruiker kan, met behulp van deze parameters, document van Apache OpenOffice openen, omdat tijdelijke plaatsaanduidingen (vervangende waarden) aan de laatste twee parameters kunnen worden toegewezen:

Dim Doc As Object
Dim Url As String
Dim Dummy() 'Een (lege) array van PropertyValues
 
Url = "file:///C:/test.odt"
 
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy)

De voorgaande aanroep opent het bestand test.odt en geeft het weer in een nieuw venster.

Elk aantal documenten kan op deze manier worden geopend in Apache OpenOffice BASIC en dan worden bewerkt door middel van de resulterende documentobjecten.

Documentation note.png StarOffice 5 : StarDesktop.loadComponentFromURL heeft voorrang boven de methoden Documents.Add en Documents.Open uit de oude API van Apache OpenOffice API.


Vervangen van de inhoud van het documentvenster

De genoemde waarde _blank voor de parameter Frame zorgt ervoor dat Apache OpenOffice een nieuw venster maakt voor elke aanroep vanuit loadComponentFromURL. In sommige situaties is het handig de inhoud van een bestaand venster te vervangen. In dat geval zou het frame-object van het venster een expliciete naam moeten bevatten. Let er op dat deze naam niet begint met een onderlijn (underscore). Verder moet de parameter SearchFlags zo worden ingesteld dat het corresponderende raamwerk wordt aangemaakt, als het al niet reeds bestaat. De corresponderende constante voor SearchFlags is:

SearchFlags = com.sun.star.frame.FrameSearchFlag.CREATE + _
              com.sun.star.frame.FrameSearchFlag.ALL

Het volgende voorbeeld toont hoe de inhoud van een geopend venster kan worden vervangen met behulp van de parameter frame en SearchFlags:

Dim Doc As Object
Dim Dummy() 
Dim Url As String
Dim SearchFlags As Long
 
SearchFlags = com.sun.star.frame.FrameSearchFlag.CREATE + _
              com.sun.star.frame.FrameSearchFlag.ALL
Url = "file:///C:/test.odt"
Doc = StarDesktop.loadComponentFromURL(Url, "MijnFrame", SearchFlags, Dummy)
MsgBox "Druk op OK om het tweede document weer te geven."
 
Url = "file:///C:/test2.odt"
Doc = StarDesktop.loadComponentFromURL(Url, "MijnFrame", _
      SearchFlags, Dummy)

Het voorbeeld opent eerst het bestand test.odt in een nieuw venster met de frame-naam van MijnFrame. Als eenmaal het berichtenvenster is bevestigd, vervangt het de inhoud van het venster met het bestand test2.odt.

Methode opties loadComponentFromURL

De vierde parameter van de functie loadComponentFromURL is een gegevensveld PropertyValue dat Apache OpenOffice diverse opties voor het openen en maken van documenten verschaft. Het gegevensveld moet een structuur PropertyValue verschaffen voor elke optie waarin de naam van de optie is opgeslagen als een tekenreeks, net als de geassocieerde waarde.

loadComponentFromURL ondersteunt de volgende opties:

AsTemplate (Boolean)
indien true, laadt een nieuw, naamloos document vanuit de opgegeven URL. Indien false worden sjabloon-bestanden geladen voor bewerking.
CharacterSet (String)
definieert op welke tekenset een document is gebaseerd.
FilterName (String)
specificeert een speciaal filter voor de functie loadComponentFromURL. De beschikbare namen van de filters zijn gedefinieerd in het bestand \share\config\registry\instance\org\openoffice\office\TypeDetection.xml.
FilterData (String)
definieert aanvullende opties voor filters.
FilterOptions (String)
definieert aanvullende opties (gebruikt door oude filters).
Hidden (Boolean)
waarde true laadt het document in de modus onzichtbaar.
JumpMark (String)
springt, als een document eenmaal is geopend, naar de positie die is gedefinieerd in JumpMark.
MacroExecutionMode (Integer)
geeft aan of macro's in het document mogen worden uitgevoerd. Waarden : bekijk com.sun.star.document.MacroExecMode
Password (String)
draagt een wachtwoord over voor een beveiligd bestand.
ReadOnly (Boolean)
waarde true laadt een document in modus Alleen-lezen.
UpdateDocMode (Integer)
geeft aan hoe/of koppelingen zullen wordne bijgewerkt. Waarden : bekijk com.sun.star.document.UpdateDocMode

Het volgende voorbeeld toont hoe een door komma's gescheiden tekstbestand in Apache OpenOffice Calc kan worden geopend met behulp van de optie FilterName.

Dim Doc As Object
Dim FileProperties(1) As New com.sun.star.beans.PropertyValue
Dim Url As String
 
Url = "file:///C:/doc.csv"
FileProperties(0).Name = "FilterName"
FileProperties(0).Value ="Text - txt - csv (StarCalc)"
FileProperties(1).Name = "FilterOptions"
FileProperties(1).value  = "44,34,0,1"
 
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, FileProperties())

De array FileProperties heeft twee elementen, één voor elke gebruikte optie. De eigenschap Filtername definieert of Apache OpenOffice een tekstfilter van Apache OpenOffice Calc gebruikt om bestanden te openen. De eigenschap FilterOptions bevat de omschrijving van de syntaxis van het .csv-bestand.

Nieuwe documenten maken

Apache OpenOffice maakt automatisch een nieuw document aan als het document, gespecificeerd in de URL, een sjabloon is.

Als alternatief kan, als alleen een leeg document zonder enige toevoeging nodig is, een URL private:factory worden gespecificeerd:

Dim Dummy() 
Dim Url As String
Dim Doc As Object
 
Url = "private:factory/swriter"
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())

De aanroep maakt een leeg document voor Apache OpenOffice Writer.

Documentobjecten

De in het voorgaande gedeelte geïntroduceerde functie loadComponentFromURL geeft een documentobject terug. Die ondersteunt de service com.sun.star.document.OfficeDocument, welke op zijn beurt twee centrale interfaces verschaft:

Opslaan en exporteren van documenten

Apache OpenOffice documenten worden direct opgeslagen via het documentobject. De methode store van de interface com.sun.star.frame.XStorable is voor dit doel beschikbaar:

Doc.store()

Deze aanroep werkt alleen als aan het document reeds geheugenruimte is toegewezen. Dit is niet het geval voor nieuwe documenten. In dat geval wordt de methode storeAsURL gebruikt. Deze methode wordt ook gedefinieerd in com.sun.star.frame.XStorable en kan worden gebruikt om de locatie van het document te bepalen:

Dim URL As String
Dim Dummy()
 
Url = "file:///C:/test3.odt"
Doc.storeAsURL(URL, Dummy())

In aanvulling op de voorgaande methoden geeft com.sun.star.frame.XStorable ook enige hulpmethoden welke handig zijn bij het opslaan van documenten. Deze zijn:

hasLocation()
specificeert of het document al een URL heeft toegewezen heeft gekregen.
isReadonly()
specificeert of een document beveiliging Alleen-lezen heeft.
isModified()
specificeert of een document is gewijzigd sinds de laatste keer dat het was opgeslagen.

De code voor het opslaan van een document kan worden uitgebreid met deze opties zodat het document alleen wordt opgeslagen indien het echt gewijzigd is en de bestandsnaam alleen wordt gevraagd als het echt nodig is:

If (Doc.isModified) Then
  If (Doc.hasLocation And (Not Doc.isReadOnly)) Then
    Doc.store()
  Else
    Doc.storeAsURL(URL, Dummy())
  End If
End If

Het voorbeeld controleert eerst of het betreffende document is gewijzigd sinds de laatste keer dat het was opgeslagen. Het gaat alleen verder met het proces van opslaan als dat het geval is. Als het document al een URL heeft en niet een Alleen-lezen-document is, wordt het opgeslagen onder de bestaande URL. Als het geen URL heeft of was geopend in de status Alleen-lezen wordt het opgeslagen onder een nieuwe URL.

Methode opties storeAsURL

Net zoals met de methode loadComponentFromURL kunnen sommige opties ook worden gespecificeerd in de vorm van een gegevensveld PropertyValue met behulp van de methode storeAsURL. Deze bepalen de procedure die Apache OpenOffice gebruikt bij het opslaan van een document. storeAsURL verschaft de volgende opties:

CharacterSet (String)
definieert op welke tekenset een document is gebaseerd.
FilterName (String)
specificeert een speciaal filter voor de functie loadComponentFromURL. De beschikbare filternamen zijn gedefinieerd in het bestand \share\config\registry\instance\org\openoffice\office\TypeDetection.xml.
FilterData (String)
definieert aanvullende opties voor filters.
FilterOptions (String)
definieert aanvullende opties (gebruikt door oude filters).
Overwrite (Boolean)
maakt het mogelijk een reeds bestaand bestand te overschrijven zonder een query.
Password (String)
draagt het wachtwoord over voor een beveiligd bestand.
Unpacked (Boolean)
slaat het document op (niet gecomprimeerd) in sub-mappen.
De mogelijkheid om documenten op te slaan op een niet-ingepakte manier wordt momenteel niet ondersteund, de eigenschap "Unpacked" wordt gewoon genegeerd, bekijk Issue 64364 .

Het volgende voorbeeld toont hoe de optie Overwrite kan worden gebruikt in samenhang met storeAsURL :

Dim Doc As Object
Dim FileProperties(0) As New com.sun.star.beans.PropertyValue
Dim Url As String
' ... Initialiseren van Doc 
 
Url = "file:///c:/test3.odt"
FileProperties(0).Name = "Overwrite"
FileProperties(0).Value = True
Doc.storeAsURL(Url, FileProperties())

Het voorbeeld slaat Doc dan op onder de gespecificeerde bestandsnaam als er al een bestand bestaat met die naam.

Documenten afdrukken

net zoals met opslaan, worden documenten direct afgedrukt door middel van het document-object. De methode Print van de interface com.sun.star.view.Xprintable is voor dit doel aanwezig. In zijn eenvoudigste vorm is de aanroep voor print:

Dim Dummy()
 
Doc.print(Dummy())

Net als in het geval van de methode loadComponentFromURL is de parameter Dummy een gegevensveld PropertyValue waardoor Apache OpenOffice diverse opties voor afdrukken kan specificeren.

De opties van de methode print

De methode print verwacht een gegevensveld PropertyValue als een parameter, die de instellingen van het dialoogvenster voor afdrukken in Apache OpenOffice weergeeft:

CopyCount (Integer)
specificeert het aantal af te drukken kopieën.
FileName (String)
drukt het document af naar het gespecificeerde bestand.
Collate (Boolean)
adviseert de printer om de pagina's van de kopieën te verzamelen.
Sort (Boolean)
sorteert de pagina's bij het afdrukken van verschillende kopieën (CopyCount > 1).
Pages (String)
bevat de lijst van af te drukken pagina's (syntaxis zoals gespecificeerd in het dialoogvenster Afdrukken).
Wait (Boolean)
indien ingesteld op True zal de methode print terugkeren nadat de taak is opgeslagen in de wachtlijst voor de printer. Gebruik deze optie als u het document na het afdrukken wilt sluiten.

Het volgende voorbeeld toont hoe meerdere pagina's van een document kunnen worden afgedrukt met behulp van de optie Pages :

Dim Doc As Object
Dim PrintProperties(1) As New com.sun.star.beans.PropertyValue
 
PrintProperties(0).Name="Pages"
PrintProperties(0).Value="1-3; 7; 9"
PrintProperties(1).Name="Wait"
PrintProperties(1).Value=True
Doc.print(PrintProperties())

Printerselectie en instellingen

De interface com.sun.star.view.XPrintable verschaft de eigenschap Printer, die de printer selecteert. Deze eigenschap ontvangt een gegevensveld PropertyValue met de volgende instellingen:

Name (String)
specificeert de naam van de printer.
PaperOrientation (Enum)
specificeert de richting van het papier ( waarde com.sun.star.view.PaperOrientation.PORTRAIT voor indeling Staand, waarde com.sun.star.view.PaperOrientation.LANDSCAPE voor indeling Liggend).
PaperFormat (Enum)
specificeert het formaat van het papier (bijvoorbeeld com.sun.star.view.PaperFormat.A4 voor DIN A4 of com.sun.star.view.PaperFormat.Letter voor US-brieven).
PaperSize (Size)
specificeert de papiergrootte in honderdsten van een millimeter.

Het volgende voorbeeld toont hoe een printer kan worden gewijzigd en de afmetingen van het papier worden ingesteld met behulp van de eigenschap Printer.

Dim Doc As Object
Dim PrinterProperties(1) As New com.sun.star.beans.PropertyValue
Dim PaperSize As New com.sun.star.awt.Size
 
PaperSize.Width = 20000    ' komt overeen met 20 cm
PaperSize.Height = 20000   ' komt overeen met 20 cm
PrinterProperties (0).Name="Name"
PrinterProperties (0).Value="Mijn HP Laserjet"
PrinterProperties (1).Name="PaperSize"
PrinterProperties (1).Value=PaperSize
Doc.Printer = PrinterProperties()

Het voorbeeld definieert een object genaamd PaperSize van het type com.sun.star.awt.Size. Dit is nodig om de papierafmeting te specificeren. Verder maakt het een gegevensveld voor twee items PropertyValue genaamd PrinterProperties. Dit gegevensveld wordt dan geïnitialiseerd met de waarden om te worden ingesteld en toegewezen aan de eigenschap Printer. Vanuit het standpunt van UNO is de printer niet een echte eigenschap, maar een geïmiteerde.


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