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

From Apache OpenOffice Wiki
Jump to: navigation, search
(New page: {{DISPLAYTITLE: 文書ドキュメント: テキスト以外のオブジェクト}} {{EN/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentation/BASI...)
 
Line 1: Line 1:
{{DISPLAYTITLE: 文書ドキュメント: テキスト以外のオブジェクト}}
+
{{DISPLAYTITLE: Documenti di testo: molto più che semplice testo}}
 
{{EN/Documentation/BASICGuideTOC/v2
 
{{EN/Documentation/BASICGuideTOC/v2
 
|ShowPrevNext=block
 
|ShowPrevNext=block
Line 8: Line 8:
 
}}
 
}}
 
   
 
   
\'96\'7b章のここまでの説明は、テキストの段落および段落部位のみを扱ってきました。しかし文書ドキュメントには、テキスト以外のオブジェクトも存在します。これに該当するのは、テーブル、テキストフィールド、ディレクトリ、\'90\'7d形描画オブジェクトなどです。このようなオブジェクトは、テキスト内の任意の位置に配置することができます。
+
Fino a questo punto, nel capitolo sono stati trattati solo paragrafi di testo e relative parti. Tuttavia i documenti di testo possono contenere anche altri oggetti, tra cui tabelle, disegni, campi di testo e directory. Tutti questi oggetti possono essere ancorati a
 +
qualsiasi punto all'interno del testo.
  
基本機能と共に、これらの {{OOo}} オブジェクトはすべて、<idl>com.sun.star.text.TextContent</idl> という共通基本サービスをサポートしています。このサービスでは、以下の属性が利用できます。
+
Grazie a queste caratteristiche comuni, tutti questi oggetti supportano in {{OOo}} un
 +
servizio di base comune denominato <idl>com.sun.star.text.TextContent</idl>, che fornisce le seguenti proprietà:
  
;<tt>AnchorType (Enum)</tt>:<tt>TextContent</tt> オブジェクトのアンカーの種類を決定します (<idl>com.sun.star.text.TextContentAnchorType</idl> 列挙型に従うデフォルト値)
+
;<tt>AnchorType (Enum)</tt>:Determina il tipo di ancoraggio di un oggetto <tt>TextContent</tt> (valori predefiniti conformi all'enumerazione <idl>com.sun.star.text.TextContentAnchorType</idl>).
;<tt>AnchorTypes (sequence of Enum)</tt>:特殊な <tt>TextContent</tt> オブジェクトをサポートするすべての <tt>AnchorTypes</tt> の列挙。
+
;<tt>AnchorTypes (sequence of Enum)</tt>:Enumerazione di tutti gli <tt>AnchorTypes</tt> che supportano un oggetto <tt>TextContent</tt> speciale.
;<tt>TextWrap (Enum)</tt>:<tt>TextContent</tt> オブジェクト周囲のテキストの折り返しの種類を特定します (<idl>com.sun.star.text.WrapTextMode</idl> 列挙型に従ったデフォルト値)
+
;<tt>TextWrap (Enum)</tt>:Determina il tipo di scorrimento del testo attorno a un oggetto <tt>TextContent</tt> (valori predefiniti conformi all'enumerazione <idl>com.sun.star.text.WrapTextMode</idl>).
  
<tt>TextContent</tt> のオブジェクトは、オブジェクトの作成、挿入、削除に関するものなど、いくつかのメソッドを共有しています。
+
Gli oggetti <tt>TextContent</tt> condividono anche alcuni metodi, in particolare quelli per creare, inserire ed eliminare gli oggetti.
  
* 新しい <tt>TextContent</tt> オブジェクトを'''作成'''するには、ドキュメントオブジェクトの <tt>createInstance</tt> メソッドを使用します。
+
* Per creare un nuovo oggetto <tt>TextContent</tt>'''''' utilizzare il metodo <tt>createInstance</tt> dell'oggetto documento.
*オブジェクトを'''\'91\'7d入'''するには、テキストオブジェクトの<tt>insertTextContent</tt> メ\'83\'5cッドを使用します。
+
* Per inserire un nuovo oggetto '''''' utilizzare il metodo <tt>insertTextContent</tt> dell'oggetto di testo.
* <tt>TextContent</tt> オブジェクトを'''削除'''するには、<tt>removeTextContent</tt> メソッドを使用します。
+
* Per eliminare un oggetto
 +
                    <tt>TextContent</tt>'''''' utilizzare il metodo <tt>removeTextContent</tt>.
  
これらのメソッドの使用法については、以下の節で例をいくつか説明します。
+
Nelle sezioni seguenti viene presentata una serie di esempi che si avvalgono di questi metodi.
  
== テーブル ==
+
== Tabelle ==
  
以下のサンプルコードでは、先に説明した createInstance メソッドを利用してテーブル (表) を作成します。
+
L'esempio seguente crea una tabella con l'ausilio del metodo createInstance descritto in precedenza.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 42: Line 45:
 
</source>
 
</source>
  
Python のサンプル:
+
Esempi Python:
 
<source lang="Python">
 
<source lang="Python">
 
def inset_img():  
 
def inset_img():  
Line 58: Line 61:
 
</source>
 
</source>
  
テーブルを作成した後、<tt>initialize</tt> の呼び出しを使用してテーブルの行数と列数を設定し、<tt>insertTextContent.</tt> を使用して文書ドキュメントに挿入します。
+
Una volta creata, la tabella viene impostata sul numero di righe e colonne richieste utilizzando una chiamata <tt>initialize</tt> e quindi inserita nel documento di testo con <tt>insertTextContent.</tt>
                      
+
                     .
  
前の例を見るとわかるように、<tt>insertTextContent</tt> メソッドには、挿入する <tt>Content</tt> オブジェクト以外に、2 つのパラメータを渡す必要があります。
+
Come illustrato nell'esempio, il metodo <tt>insertTextContent</tt> prevede non solo l'inserimento dell'oggetto <tt>Content</tt>, ma anche l'inserimento di altri due parametri:
  
* 挿入位置を指定する <tt>Cursor</tt> オブジェクト。
+
* un oggetto <tt>Cursor</tt> che determina la posizione di inserimento
*<tt>Content</tt> オブジェクトをカーソルの現在の選択範囲と置き換えるか (<tt>True</tt>) または現在の選択テキストの直前に挿入するか (<tt>False</tt>) を指定するブール値。
+
* una variabile booleana che specifica se l'oggetto <tt>Content</tt> deve sostituire la selezione corrente del cursore (valore <tt>True</tt>) o se deve essere inserito nel testo prima della selezione corrente (valore <tt>False</tt>).
  
{{Documentation/Note|テーブルを作成して文書ドキュメントに挿入するときは、VBA で使用するものと似たオブジェクトを {{OOo}} Basic でも使用します。{{OOo}} Basic ではドキュメントオブジェクトと <tt>TextCursor</tt> オブジェクトを使用し、VBA では <tt>Range</tt> オブジェクトを使用します。VBA ではテーブルの作成と設定は <tt>Document.Tables.Add</tt> メソッドが処理しますが、{{OOo}} Basic では、前の例のように、テーブルの作成は <tt>createInstance</tt> を使用して行い、初期化とドキュメントへの挿入には <tt>insertTextContent</tt> を使用します。}}
+
{{Documentation/Note|Alla creazione e inserimento delle tabelle in un documento di testo, in {{OOo}} Basic vengono utilizzati oggetti simili a quelli disponibili in VBA: l'oggetto documento e un oggetto <tt>TextCursor</tt> in {{OOo}} Basic o l'oggetto <tt>Range</tt> come sua controparte VBA. In VBA il metodo <tt>Document.Tables.Add</tt> crea e imposta la tabella; in {{OOo}} Basic la tabella viene creata in base all'esempio precedente, mediante <tt>createInstance</tt>, quindi inizializzata e inserita nel documento tramite <tt>insertTextContent</tt>.}}
  
文書ドキュメントに挿入されたすべてのテーブルの取得は、簡単なループで処理できます。この処理には、文書ドキュメントオブジェクトの <tt>getTextTables()</tt> メソッドを使用します。
+
È possibile determinare le tabelle inserite in un documento di testo utilizzando un semplice ciclo. A tal fine è utilizzato il metodo <tt>getTextTables()</tt> dell'oggetto
 +
documento di testo:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 85: Line 89:
 
</source>
 
</source>
  
{{Documentation/Note|{{OOo}} では、ドキュメントオブジェクトの <tt>TextTables</tt> リストを使用してテキストテーブルにアクセスできます。 先に見たサンプルコードでは、テキストテーブルの作成法について説明しました。テキストテーブルへのアクセスについては、以下の節で説明します。}}
+
{{Documentation/Note|Le tabelle di testo sono disponibili in {{OOo}} tramite l'elenco <tt>TextTables</tt> dell'oggetto documento. L'esempio precedente mostra come creare una tabella di testo. Le opzioni per accedere alle tabelle di testo sono descritte nella sezione seguente.}}
  
=== テーブルの編集 ===
+
=== Modifica delle tabelle ===
  
テーブルは、個別の行で構成されています。そして各行は、いくつかのセルに分割されています。厳密に言うと、{{OOo}} にはテーブルの列は存在しません。 ここでのテーブル列は、複数の行を上下方向に並べた結果として形成された、いわば見かけ上の存在です。ただし、{{OOo}} には、テーブルに簡単にアクセスできるよう、列を操作するメソッドがいくつか用意されています。 これらのメ\'83\'5cッドは、セルを結合していないテーブルを扱う場合に有用です。
+
Una tabella è formata da singole righe che a loro volta contengono diverse celle. In senso stretto, in {{OOo}} non sono presenti colonne di tabelle, che vengono prodotte in modo implicito disponendo le righe (una sotto l'altra) una accanto all'altra. Per semplificare l'accesso alle tabelle, {{OOo}} fornisce tuttavia alcuni metodi che operano utilizzando le colonne e risultano di particolare utilità se nella tabella non si è eseguita l'unione di più celle.
  
ここではまず、テーブル自体のプロパティーについて説明します。これらは、<idl>com.sun.star.text.TextTable</idl> サービスで定義されています。 以下に、重要度の高いテーブルオブジェクトの属性を示します。
+
Ma è opportuno osservare prima le proprietà della tabella stessa. Esse sono definite nel servizio <idl>com.sun.star.text.TextTable</idl>. Di seguito viene riportato un elenco
 +
delle più importanti proprietà dell'oggetto tabella:
  
;<tt>BackColor (Long)</tt>:テーブルの背景色。
+
;<tt>BackColor (Long)</tt>:Colore di sfondo della tabella.
;<tt>BottomMargin (Long)</tt>:100 分の 1 ミリ単位で指定した下部マージン。
+
;<tt>BottomMargin (Long)</tt>:Margine inferiore in centesimi di millimetro.
;<tt>LeftMargin (Long)</tt>:100 分の 1 ミリ単位で指定した左マージン。
+
;<tt>LeftMargin (Long)</tt>:Margine sinistro in centesimi di millimetro.
;<tt>RightMargin (Long)</tt>:100 分の 1 ミリ単位で指定した右マージン。
+
;<tt>RightMargin (Long)</tt>:Margine destro in centesimi di millimetro.
;<tt>TopMargin (Long)</tt>:100 分の 1 ミリ単位で指定した上部マージン。
+
;<tt>TopMargin (Long)</tt>:Margine superiore in centesimi di millimetro.
;<tt>RepeatHeadline (Boolean)</tt>:テーブルヘッダをすべてのページに表示します。
+
;<tt>RepeatHeadline (Boolean)</tt>:L'intestazione della tabella viene ripetuta su ogni pagina.
;<tt>Width (Long)</tt>:100 分の 1 ミリ単位で指定したテーブルの絶対幅。
+
;<tt>Width (Long)</tt>:Larghezza assoluta della tabella in centesimi di millimetro.
  
=== テーブル行 ===
+
=== Righe ===
  
テーブルは、行を含むリストで構成されます。以下のサンプルコードでは、テーブル内の行を取得して書式を設定します。
+
Una tabella è formata da un elenco contenente una serie di righe. L'esempio seguente mostra come richiamare e formattare le righe di una tabella.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 127: Line 132:
 
</source>
 
</source>
  
この例では、最初に <tt>Table.getRows</tt> を使用して、すべての行を含むリストを作成しています。 リストをさらに処理するには、<tt>com.sun.star.table.XtableRows</tt> インターフェースに属する <tt>getCount</tt> および <tt>getByIndex</tt> メソッドを使用します。 <tt>getByIndex</tt> メソッドは、<idl>com.sun.star.text.TextTableRow</idl> サービスをサポートする行オブジェクトを返します。
+
In primo luogo l'esempio crea un elenco contenente tutte le righe utilizzando una chiamata <tt>Table.getRows</tt>. I metodi <tt>getCount</tt> e <tt>getByIndex</tt> consentono l'ulteriore elaborazione dell'elenco e appartengono all'interfaccia <tt>com.sun.star.table.XtableRows</tt>. Il metodo <tt>getByIndex</tt> restituisce un oggetto
 +
riga, che supporta il servizio <idl>com.sun.star.text.TextTableRow</idl>.
  
<idl>com.sun.star.table.XtableRows</idl> インターフェースの主要なメソッドを次に示します。
+
Di seguito vengono riportati i metodi principali dell'interfaccia <idl>com.sun.star.table.XtableRows</idl>:
  
;<tt>getByIndex(Integer)</tt>:指定したインデックスの行オブジェクトを返します。
+
;<tt>getByIndex(Integer)</tt>:Restituisce un oggetto riga per l'indice specificato.
;<tt>getCount()</tt>:行オブジェクトの数を返します。
+
;<tt>getCount()</tt>:Restituisce il numero di oggetti riga.
;<tt>insertByIndex(Index, Count)</tt>:テーブルの <tt>Index</tt> の位置に Count 行を挿入します。
+
;<tt>insertByIndex(Index, Count)</tt>:Inserisce un numero di righe pari a Count nella tabella alla posizione di <tt>Index</tt>.
;<tt>removeByIndex(Index, Count)</tt>:テーブルの <tt>Index</tt> の位置から Count 行を削除します。
+
;<tt>removeByIndex(Index, Count)</tt>:Elimina un numero di righe pari a Count dalla tabella alla posizione di <tt>Index</tt>.
  
<tt>getByIndex</tt> および <tt>getCount</tt> メソッドはすべてのテーブルで使用できますが、<tt>insertByIndex</tt> および <tt>removeByIndex</tt> メソッドを使用できるのは、セルを結合していないテーブルだけです。
+
Mentre i metodi <tt>getByIndex</tt> e <tt>getCount</tt> sono disponibili in tutte le tabelle, i metodi <tt>insertByIndex</tt> e <tt>removeByIndex</tt> si possono utilizzare solo nelle tabelle che non contengono celle precedentemente unite.
  
<idl>com.sun.star.text.TextTableRow</idl> サービスは以下のプロパティーを提供します。
+
Il servizio <idl>com.sun.star.text.TextTableRow</idl> fornisce le proprietà seguenti:
  
;<tt>BackColor (Long)</tt>:行の背景色。
+
;<tt>BackColor (Long)</tt>:Colore di sfondo della riga.
;<tt>Height (Long)</tt>:100 分の 1 ミリ単位で指定した行の高さ。
+
;<tt>Height (Long)</tt>:Altezza della riga in centesimi di millimetro.
;<tt>IsAutoHeight (Boolean)</tt>:テーブルの高さを内容に合わせて動的に調節する。
+
;<tt>IsAutoHeight (Boolean)</tt>:L'altezza della tabella viene adattata dinamicamente al suo
;<tt>VertOrient (const)</tt>:テキスト枠の縦の方向 — テーブル内でのテキストの縦方向の詳細 (<idl>com.sun.star.text.VertOrientation</idl> で定義されている値)
+
contenuto.
 +
;<tt>VertOrient (const)</tt>:Orientamento verticale della cornice di testo – dettagli sull'orientamento verticale del testo all'interno della tabella (valori conformi a <idl>com.sun.star.text.VertOrientation</idl>)
  
=== ===
+
=== Colonne ===
  
列には行と同じ方法でアクセスし、<tt>Column</tt> オブジェクトの <tt>getByIndex</tt><tt>getCount</tt><tt>insertByIndex</tt>、および <tt>removeByIndex</tt> メソッドを使用します。このオブジェクトは、<tt>getColumns</tt> を使用して取得します。ただしこれらのメ\'83\'5cッドが利用できるのは、セルを結合していないテーブルだけです。また、{{OOo}} Basic では、列単位でセルの書式を設定することはできません。このような処理を行うには、テーブルのセルを個別に書式設定する必要があります。
+
Per accedere alle colonne si procede come con le righe, utilizzando i metodi <tt>getByIndex</tt>, <tt>getCount</tt>, <tt>insertByIndex</tt> e <tt>removeByIndex</tt> sull'oggetto <tt>Column</tt> raggiungibile tramite <tt>getColumns</tt>. Li potrete però utilizzare solo nelle tabelle che non contengono celle precedentemente unite. In {{OOo}} Basic le celle non possono essere formattate per colonna. Per procedere comunque in tal senso, dovete avvalervi del metodo di formattazione delle singole celle della tabella.
  
=== セル ===
+
=== Celle ===
  
{{OOo}} ドキュメントの各セルには、固有の名前が付いています。 {{OOo}} のカーソルがセル内にある場合、そのセルの名前がステータスバーに表示されます。 通常、左上隅のセルは A1 と表示され、右下隅のセルは <tt>Xn</tt> と表示されます。<tt>X</tt> は列を示す文字で、<tt>n</tt> は行を示す番号です。 セルオブジェクトにアクセスするには、テーブルオブジェクトの <tt>getCellByName()</tt> メソッドを使用します。 以下のサンプルコードでは、ループを使用してテーブル内のすべてルにアクセスし、個々のセルごとに該当する行と列の番号を\'95\'5c示します。
+
Ogni cella di un documento di {{OOo}} ha un nome univoco. Se il cursore di {{OOo}} si trova in una cella, il nome della cella viene visualizzato nella barra di stato. La cella superiore sinistra è generalmente denominata A1, mentre quella inferiore destra è denominata <tt>Xn</tt>, dove <tt>X</tt> rappresenta le lettere della colonna superiore e <tt>n</tt> i numeri dell'ultima riga. Gli oggetti cella sono disponibili tramite il metodo <tt>getCellByName()</tt> dell'oggetto tabella. L'esempio seguente mostra un ciclo che vaglia tutte le celle di una tabella e inserisce i numeri di riga e colonna corrispondenti nelle celle.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 184: Line 191:
 
</source>
 
</source>
  
テーブルのセルは、通常のテキストに相当します。関連する <tt>TextCursor</tt> オブジェクトの作成用に、<tt>createTextCursor</tt> インターフェースがサポートされています。
+
La cella di una tabella è paragonabile a un testo standard e supporta l'interfaccia <tt>createTextCursor</tt> per creare un oggetto <tt>TextCursor</tt> associato.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 190: Line 197:
 
</source>
 
</source>
  
したがって、個々の文字および段落に対して設定可能なすべての書式オプションが、自動的に使用できるようになります。
+
Tutte le opzioni di formattazione per i singoli caratteri e paragrafi sono quindi automaticamente disponibili.
  
以下のサンプルコードでは、文書ドキュメント上のすべてのテーブルを調べて、数値の入ったセルのみを右揃えにしますが、セルの書式設定の際に段落プロパティーを利用しています。
+
L'esempio seguente esegue una ricerca in tutte le tabelle di un documento di testo e applica il formato allineato a destra a tutte le celle con valori numerici per mezzo della proprietà di paragrafo corrispondente.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 221: Line 228:
 
</source>
 
</source>
  
この例では、ループで処理したすべてのテキストのテーブルを含む <tt>TextTables</tt> リストを作成しています。 続いて、{{OOo}} はこれらの各テーブルに関連付けられているセル名のリストを作成します。 次にこのリストを基にして、第 2 のループを開始します。このループでは、セル内のデータが数値であるかを判定し、その結果に応じて書式を設定します。そのために、まずテーブルセルの内容を参照する <tt>TextCursor</tt> オブジェクトを作成してから、テーブルセルの段落プロパティーを適用しています。
+
L'esempio crea un elenco <tt>TextTables</tt> contenente tutte le tabelle di un testo attraversate nel ciclo. {{OOo}} crea quindi un elenco dei nomi delle celle associate per ognuna di queste tabelle, che vengono vagliate a turno nel ciclo. Se una cella contiene un valore numerico, l'esempio modifica la formattazione di conseguenza. Per procedere in tal senso, crea prima un oggetto <tt>TextCursor</tt> che fa riferimento al contenuto della cella della tabella, quindi adatta le proprietà del paragrafo alla cella.
  
== テキスト枠 ==
+
== Cornici di testo ==
  
テキスト枠も、テーブルやグラフと同様に <tt>TextContent</tt> オブジェクトとして扱われます。 テキスト枠は\'96\'7b質的に通常のテキストと同質のものですが、ページ上の任意の位置に配置できることと、ドキュメント\'96\'7b文のテキストの流れから外れた存在である点が異なります。
+
Le cornici di testo sono considerate oggetti <tt>TextContent</tt>, proprio come le tabelle e i
 +
grafici e possono essere costituite essenzialmente da testo standard, sebbene siano collocabili in qualsiasi posizione della pagina e non vengano incluse nel flusso del testo.
  
これまでに見てきた <tt>TextContent</tt> オブジェクトと同様に、テキスト枠の場合も、オブジェクトの作成とドキュメント上への挿入は、それぞれ個別の操作として実行します。.
+
Come con tutti gli oggetti <tt>TextContent</tt>, anche nelle cornici di testo si opera una distinzione tra creazione effettiva e inserimento nel documento.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 241: Line 249:
 
</source>
 
</source>
  
テキスト枠の作成には、ドキュメントオブジェクトの <tt>createInstance</tt> メソッドを使用します。 作成後のテキスト枠は、<tt>Text</tt> オブジェクトの <tt>insertTextContent</tt> メソッドを使用して、ドキュメントへ挿入します。 その際には、<idl>com.sun.star.text.TextFrame</idl> というサービス名を指定する必要があります。
+
Per creare la cornice di testo, utilizzate il metodo <tt>createInstance</tt> dell'oggetto
 +
documento. La cornice di testo così creata può essere poi inserita nel documento utilizzando il metodo <tt>insertTextContent</tt> dell'oggetto <tt>Text</tt>. In questa operazione dovrete specificare il nome del servizio <idl>com.sun.star.text.TextFrame</idl> corretto.
  
テキスト枠の挿入位置は <tt>Cursor</tt> オブジェクトにより指定されるため、挿入時はこのオブジェクトも準備しておく必要があります。
+
La posizione di inserimento della cornice di testo è determinata da un oggetto <tt>Cursor</tt> che viene inoltre eseguito all'inserimento.
  
{{Documentation/Note|{{OOo}} のテキスト枠は、MS Word の位置フレームに相当する機能です。 ただし、VBA の処理では、<tt>Document.Frames.Add</tt> メソッドを使用しますが、StarSuite Basic では上述したように、ドキュメントオブジェクトの <tt>TextCursor</tt> および <tt>createInstance</tt> メソッドを使用して作成します。}}
+
{{Documentation/Note|Le cornici di testo sono il corrispondente in{{OOo}} della cornice di posizione
 +
utilizzata in Word. Mentre VBA utilizza il metodo <tt>Document.Frames.Add</tt> per
 +
questo scopo, la creazione in VBA viene eseguita utilizzando la suddetta procedura con l'ausilio di un <tt>TextCursor</tt> nonché del metodo <tt>createInstance</tt> dell'oggetto documento.}}
  
テキスト枠オブジェクトには、テキスト枠の表示位置や動作を制御するために、各種の属性が用意されています。これらプロパティーの大部分は <idl>com.sun.star.text.BaseFrameProperties</idl> サービスで定義されているもので、これは各 <tt>TextFrame</tt> サービスでもサポートされています。 以下に主要なプロパティーを示します。
+
Gli oggetti cornice di testo forniscono una serie di proprietà con le quali influenzare la posizione e il funzionamento della cornice. La maggior parte di tali proprietà è definita nel servizio <idl>com.sun.star.text.BaseFrameProperties</idl>, che è supportato anche da ogni servizio <tt>TextFrame</tt>. Le proprietà principali sono le seguenti:
  
;<tt>BackColor (Long)</tt>:テキスト枠の背景色。
+
;<tt>BackColor (Long)</tt>:Colore di sfondo della cornice di testo.
;<tt>BottomMargin (Long)</tt>:100 分の 1 ミリ単位で指定した下部マージン。
+
;<tt>BottomMargin (Long)</tt>:Margine inferiore in centesimi di millimetro.
;<tt>LeftMargin (Long)</tt>:100 分の 1 ミリ単位で指定した左マージン。
+
;<tt>LeftMargin (Long)</tt>:Margine sinistro in centesimi di millimetro.
;<tt>RightMargin (Long)</tt>:100 分の 1 ミリ単位で指定した右マージン。
+
;<tt>RightMargin (Long)</tt>:Margine destro in centesimi di millimetro.
;<tt>TopMargin (Long)</tt>:100 分の 1 ミリ単位で指定した上部マージン。
+
;<tt>TopMargin (Long)</tt>:Margine superiore in centesimi di millimetro.
;<tt>Height (Long)</tt>:100 分の 1 ミリ単位で指定したテキスト枠の高さ。
+
;<tt>Height (Long)</tt>:Altezza della cornice di testo in centesimi di millimetro.
;<tt>Width (Long)</tt>:100 分の 1 ミリ単位で指定したテキスト枠の幅。
+
;<tt>Width (Long)</tt>:Larghezza della cornice di testo in centesimi di millimetro.
;<tt>HoriOrient (const)</tt>:テキスト枠の横方向 (<idl>com.sun.star.text.HoriOrientation</idl> で定義されている値)
+
;<tt>HoriOrient (const)</tt>:Orientamento orizzontale della cornice di testo (conforme a <idl>com.sun.star.text.HoriOrientation</idl>).
;<tt>VertOrient (const)</tt>:テキスト枠の縦方向 (<idl>com.sun.star.text.VertOrientation</idl> で定義されている値)
+
;<tt>VertOrient (const)</tt>:Orientamento verticale della cornice di testo (conforme a <idl>com.sun.star.text.VertOrientation</idl>).
  
以下のサンプルコードでは、これらのプロパティーを使用してテキスト枠を作成します。
+
L'esempio seguente crea una cornice di testo utilizzando le proprietà descritte in precedenza:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 286: Line 297:
 
</source>
 
</source>
  
このサンプルコードでは、テキスト枠の挿入位置を指定するために <tt>TextCursor</tt> を作成しています。 実際の\'91\'7d入位置は、1 つ目と 2 つ目の単語の間です。そして、<tt>Doc.createInstance</tt> を使用してテキスト枠を作成します。 その後、テキスト枠の各属性に必要な値を指定しています。
+
L'esempio crea un <tt>TextCursor</tt> come segno di inserimento per la cornice di testo, posizionato tra la prima e la seconda parola del testo. La cornice di testo viene creata utilizzando <tt>Doc.createInstance</tt>. Le proprietà degli oggetti cornice di testo sono
 +
impostate sui valori iniziali richiesti.
  
<tt>AnchorType</tt> (<tt>TextContent</tt> サービス) プロパティーと <tt>VertOrient</tt> (<tt>BaseFrameProperties</tt> サービス) プロパティーとの関係には注意が必要です。 <tt>AnchorType</tt> <tt>AS_CHARACTER</tt> 値を受け取ります。 これは、テキスト枠をテキストフロー中に直接\'91\'7d入して、通常の文字として動作するよう指定するものです。このような指定により、たとえばテキストフローが途中で改行される場合、このテキスト枠も次の行に送られるようになります。一方の <tt>VertOrient</tt> プロパティーに指定した <tt>LINE_TOP</tt> という値は、テキスト枠とテキストの上端を同じ高さにするための設定です。
+
Osservate l'interazione tra le proprietà <tt>AnchorType</tt> (dal servizio <tt>TextContent</tt>) e <tt>VertOrient</tt> (dal servizio <tt>BaseFrameProperties</tt>). <tt>AnchorType</tt> riceve il valore <tt>AS_CHARACTER</tt>. La cornice viene pertanto inserita direttamente nel flusso del testo e funziona come un carattere. Può, ad esempio, essere spostata nella riga successiva se si verifica un a capo. Il valore <tt>LINE_TOP</tt> della proprietà <tt>VertOrient</tt> garantisce che il bordo superiore della cornice di testo sia alla stessa altezza del bordo superiore del carattere.
  
初期値の設定終了後、<tt>insertTextContent</tt> を使用してテキスト枠を文章ドキュメントに挿入します。
+
Una volta completata l'inizializzazione, la cornice di testo viene infine inserita nel documento di testo utilizzando una chiamata da <tt>insertTextContent</tt>.
  
テキスト枠の内容を編集するには、<tt>TextCursor</tt> を使用する必要がありますが、その使用法はすでに説明したように、テキスト枠の場合も特に違いはありません。
+
Per modificare il contenuto di una cornice di testo, l'utente si avvale del <tt>TextCursor</tt>, già citato varie volte e disponibile anche per le cornici di testo.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 316: Line 328:
 
</source>
 
</source>
  
上記のサンプルコードでは、テキスト枠を作成して現在のドキュメントに挿入し、このテキスト枠内部に <tt>TextCursor</tt> を移動しています。 次にこのカー\'83\'5cルを使用して、テキスト枠内の\'95\'5c示フォントの太字への設定および、段落配置の中央揃への設定を行なっています。そして最後に「This is a small test!」という文字列を、テキスト枠内に表示させています。
+
L'esempio crea una cornice di testo, la inserisce nel documento corrente e apre un <tt>TextCursor</tt> per la cornice di testo. Questo cursore viene impiegato per impostare il
 +
carattere della cornice su grassetto e l'orientamento del paragrafo su centrato. Infine alla cornice di testo viene assegnata la stringa "This is a small test!" .
  
== テキストフィールド ==
+
== Campi di testo ==
  
テキストフィールドは、通常のテキストを拡張する追加ロジックを提供するので、<tt>TextContent</tt> オブジェクトです。 テキストフィールドの文書ドキュメントへの挿入では、他の <tt>TextContent</tt> オブジェクトの場合と同様のメソッドを使用します。
+
I campi di testo sono oggetti <tt>TextContent</tt>, in quanto forniscono funzionalità addizionali che vanno oltre il semplice testo. Possono essere inseriti in un documento di testo utilizzando gli stessi metodi impiegati per gli altri oggetti <tt>TextContent</tt>:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 335: Line 348:
 
</source>
 
</source>
  
このサンプルコードでは、現在の日付を表示するテキストフィールドを、文書ドキュメントの先頭に挿入しています。<tt>IsDate</tt> プロパティーへの <tt>True</tt> の指定は、日付のみを表示し、時刻は表示しないことを意味します。 また、<tt>IsFixed</tt> への <tt>False</tt> の指定は、ドキュメントを開く際に日付を自動更新することを意味します。
+
L'esempio inserisce un campo di testo con la data corrente all'inizio del documento di testo corrente. Il valore <tt>True</tt> della proprietà <tt>IsDate</tt> produce la visualizzazione della sola data e non dell'ora. Il valore <tt>False</tt> per <tt>IsFixed</tt> garantisce che la data venga automaticamente aggiornata all'apertura del documento.
  
{{Documentation/Note|VBA ではフィールドの種類を指定するのに <tt>Document.Fields.Add</tt> メソッドのパラメータを使用しますが、{{OOo}} Basic ではフィールドの種類を指定するサービス名がその役割を担っています。}}
+
{{Documentation/Note|Mentre in VBA il tipo di un campo è specificato da un parametro del metodo <tt>Document.Fields.Add</tt>, in {{OOo}} Basic il tipo è definito dal nome del servizio responsabile.}}
  
{{OOo}} の従来バージョンでは、テキストフィールドを操作するのに、<tt>Selection</tt> オブジェクトで使用できた各種のメソッドを利用する必要がありました (たとえば <tt>InsertField</tt><tt>DeleteUserField</tt><tt>SetCurField)</tt>
+
In passato, si accedeva ai campi di testo utilizzando una serie completa di metodi resi disponibili da {{OOo}} nell'oggetto obsoleto <tt>Selection</tt> (ad esempio <tt>InsertField</tt>, <tt>DeleteUserField</tt>, <tt>SetCurField)</tt>).
  
{{OOo}} 2.x では、テキストフィールドの処理もオブジェクト指向の概念に基づくよう改められました。 つまりテキストフィールドを\'8d\'5c築するに当たっては、最初に該当するタイプのテキストフィールドを作成してから、必要な属性値を指定して初期化する必要があります。このような処理を経た後、<tt>insertTextContent</tt> メソッドを使用してテキストフィールドをドキュメントに挿入します。 このような処理の流れは、先に紹介したサンプルコードに示した通りです。主要なフィールドの種類およびそれらの属性については、以下の節で説明しています。
+
In {{OOo}} 2.x, i campi vengono invece gestiti utilizzando un concetto orientato agli oggetti. Per creare un campo di testo, dovete prima creare un campo di testo del tipo richiesto e quindi inizializzarlo utilizzando le proprietà necessarie. Il campo di testo viene poi inserito nel documento con il metodo <tt>insertTextContent</tt>. Nell'esempio precedente è illustrato un testo sorgente corrispondente. I tipi di campi più importanti e le relative proprietà sono descritti nelle sezioni che seguono.
  
テキストフィールド関係の操作では、ドキュメントへの挿入以外にも、ドキュメント上のフィールドを検索するという処理も行えます。以下のサンプルコードでは、ループを使って文書ドキュメント上のすべてのテキストフィールドにアクセスし、フィールドの種類を確認します。
+
Oltre all'inserimento dei campi di testo, anche la ricerca dei campi in un documento può costituire un'attività importante. L'esempio seguente mostra come vagliare in un ciclo tutti i campi di testo di un documento di testo e controllarne il tipo di pertinenza.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 370: Line 383:
 
</source>
 
</source>
  
テキストフィールドの存在を設定する起点となるのは、ドキュメントオブジェクトの <tt>TextFields</tt> リストです。 このサンプルコードでは、<tt>Enumeration</tt> オブジェクトを作成することでこのようなリストを取得し、すべてのテキストフィールドにアクセスするループに入ります。 検出されたテキストフィールドに対しては、<tt>supportsService</tt> メソッドを用いて、そのサポートするサービスを確認します。 フィールドの種類が日付/時刻 (date/time) ないしコメント (annotation) の場合は、該当するフィールドの種類をメッセージ\'83\'7bックスに\'95\'5c示します。その他の種類のフィールドに対しては、「unknown」と表示します。
+
Il punto iniziale per determinare i campi di testo presenti è l'elenco <tt>TextFields</tt> dell'oggetto documento. L'esempio crea un oggetto <tt>Enumeration</tt> sulla base di questo elenco, con il quale è possibile vagliare uno per volta tutti i campi di testo in un ciclo. I campi di testo individuati vengono controllati per verificare il servizio supportato utilizzando il metodo <tt>supportsService</tt>. Se il campo risulta essere del tipo per
 +
data/ora o annotazioni, il tipo di campo corrispondente viene visualizzato in una casella di informazioni. Se per contro l'esempio incontra un altro campo, visualizza l'informazione "sconosciuto".
  
以下に、重要なテキストフィールドとそのプロパティーを示します。すべてのテキストフィールドに関するリストについては、『API reference』の <tt>com.sun.star.text.TextField</tt> モジュールを参照してください ({{OOo}} Basic では、先に見たサンプルコードの表記と同様に、テキストフィールドのサービス名の大文字と小文字を区別する必要があります)
+
Di seguito viene riportato un elenco dei campi di testo più importanti e delle relative proprietà associate. Un elenco completo di tutti i campi di testo è fornito nel riferimento dell'API nel modulo <tt>com.sun.star.text.TextField</tt>. (Per l'elencazione dei nomi di servizi di un campo di testo, utilizzate in {{OOo}} Basic caratteri in maiuscolo e in minuscolo, come nell'esempio precedente).
  
=== ページ数、語数、文字数 ===
+
=== Numeri di pagine, parole e caratteri ===
  
テキストフィールドについては、以下のサービスが利用できます。
+
I campi di testo
  
 
* <idl>com.sun.star.text.TextField.PageCount</idl>
 
* <idl>com.sun.star.text.TextField.PageCount</idl>
Line 382: Line 396:
 
* <idl>com.sun.star.text.TextField.CharacterCount</idl>
 
* <idl>com.sun.star.text.TextField.CharacterCount</idl>
  
それぞれページ数、語数、文字数を返します。これらは以下のプロパティーをサポートしています。
+
restituiscono il numero di pagine, parole e caratteri di un testo e supportano la proprietà seguente:
  
;<tt>NumberingType (const)</tt>:番号付け形式 (<idl>com.sun.star.style.NumberingType</idl> の定数に従ったガイドライン)
+
;<tt>NumberingType (const)</tt>:formato di numerazione (regole conformi alle costanti di <idl>com.sun.star.style.NumberingType</idl>).
  
=== 現在のページ ===
+
===Pagina corrente===
  
現在のページ番号を表示するフィールドをドキュメントに挿入するには、テキストフィールドに <idl>com.sun.star.text.TextField.PageNumber</idl> を指定します。 この場合は、以下のプロパティーが利用できます。
+
Il numero della pagina corrente può essere inserito nel documento utilizzando il campo di testo <idl>com.sun.star.text.TextField.PageNumber</idl>. È possibile specificare le proprietà seguenti:
  
;<tt>NumberingType (const)</tt>:番号形式 (<idl>com.sun.star.style.NumberingType</idl> の定数に従ったガイドライン)
+
;<tt>NumberingType (const)</tt>:Formato numerico (regole conformi alle costanti di <idl>com.sun.star.style.NumberingType</idl>).
;<tt>Offset (short) </tt>:ページ番号に追加するオフセット値 (負の値も指定可能)
+
;<tt>Offset (short) </tt>:Correzione aggiunta al numero di pagine (è possibile anche la specifica negativa).
  
以下のサンプルコードでは、ページ番号表示用のフッタをドキュメントに挿入します。
+
L'esempio seguente mostra come inserire il numero di pagine nel piè di pagina di un documento.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 417: Line 431:
 
</source>
 
</source>
  
このサンプルコードでは、まず <idl>com.sun.star.text.TextField.PageNumber</idl> サービスをサポートするテキストフィールドを作成しています。 {{OOo}} ではヘッダおよびフッタ行をページテンプレートに定義しているため、<tt>PageStyles</tt> のリストから選択することによりオブジェクトを作成しています。
+
L'esempio crea prima un campo di testo che supporta il servizio <idl>com.sun.star.text.TextField.PageNumber</idl>. Poiché le righe di intestazione e piè di pagina sono definite come parte dei modelli di pagina di {{OOo}}, la determinazione iniziale viene effettuata utilizzando l'elenco di tutti i <tt>PageStyles</tt>.
  
フッタ行を表示するには、<tt>FooterIsOn</tt> プロパティーに <tt>True</tt> を設定します。 テキストフィールドをドキュメントに\'91\'7d入する際には、左揃え\'95\'5c示を指定したテキストオブジェクトを使用しています。
+
Per garantire che la riga del piè di pagina sia visibile, la proprietà <tt>FooterIsOn</tt> è impostata su <tt>True</tt>. Il campo di testo viene quindi inserito nel documento utilizzando l'oggetto testo associato della riga del piè di pagina di sinistra.
  
=== コメント ===
+
===Annotazioni===
  
コメント (注釈) フィールド (<idl>com.sun.star.text.TextField.Annotation</idl>) は、文章ドキュメント上で黄色のシンボルとして表示されます。 このシン\'83\'7bルをクリックすると、テキストフィールドが開き、\'91\'7d入箇所の文章に関するコメントを入力できるようになります。コメントフィールドでは、以下の属性が利用できます。
+
I campi di annotazioni (<idl>com.sun.star.text.TextField.Annotation</idl>) vengono
 +
visualizzati per mezzo di un simbolino giallo nel testo. Facendo clic su questo simbolo si apre un campo di testo, in cui potrete registrare un commento sul punto corrente nel testo. Un campo di annotazione possiede le seguenti proprietà:
  
;<tt>Author (String)</tt>:作成者の名前。
+
;<tt>Author (String)</tt>:nome dell'autore.
;<tt>Content (String)</tt>:コメントテキスト。
+
;<tt>Content (String)</tt>:testo di commento.
;<tt>Date (Date)</tt>:コメントが入力された日付。
+
;<tt>Date (Date)</tt>:data in cui è scritta l'annotazione.
  
=== 日付と時刻 ===
+
=== Data/ora===
  
日付/時刻フィールド (<idl>com.sun.star.text.TextField.DateTime</idl>) は、現在の日付および時刻の表示に使用します。 この場合は、以下のプロパティーが利用できます。
+
Un campo data/ora (<idl>com.sun.star.text.TextField.DateTime</idl>) rappresenta la data o l'ora correnti e supporta le proprietà seguenti:
  
;<tt>IsFixed (Boolean)</tt>:<tt>True</tt> を指定すると、表示時間を更新させず、<tt>False</tt> を指定するとドキュメントを開く際に自動更新する。
+
;<tt>IsFixed (Boolean)</tt>:Se è <tt>True</tt>, i dettagli dell'ora di inserimento rimangono invariati; se è <tt>False</tt>, vengono aggiornati a ogni apertura del documento.
;<tt>IsDate (Boolean)</tt>:<tt>True</tt> を指定するとフィールドに現在の日付を表示させ、それ以外の場合は現在の時刻を表示する。
+
;<tt>IsDate (Boolean)</tt>:Se è <tt>True</tt>, il campo visualizza la data corrente, altrimenti l'ora
;<tt>DateTimeValue (struct)</tt>:フィールドの現在の内容 (<idl>com.sun.star.util.DateTime</idl> 構造体)
+
corrente.
;<tt>NumberFormat (const)</tt>:日付および時刻の表示書式。
+
;<tt>DateTimeValue (struct)</tt>:Contenuto corrente del campo (struttura <idl>com.sun.star.util.DateTime</idl>)
 +
;<tt>NumberFormat (const)</tt>:Formato di visualizzazione dell'ora o della data.
  
=== 章名および章番号 ===
+
=== Nome/numero del capitolo===
  
テキストフィールドに章名を表示するには、<idl>com.sun.star.text.TextField.Chapter</idl> 型を使用します。\'95\'5c示形式は、以下の 2 つの属性で指定します。
+
Il nome del capitolo corrente è disponibile tramite un campo di testo del tipo <idl>com.sun.star.text.TextField.Chapter</idl>. La modalità può essere definita mediante due proprietà.
  
;<tt>ChapterFormat (const)</tt>:章名と章番号のどちらを表示するかを指定する (<idl>com.sun.star.text.ChapterFormat</idl> に定められた値)
+
;<tt>ChapterFormat (const)</tt>:Determina se è riportato il nome o il numero del capitolo (conformemente a <idl>com.sun.star.text.ChapterFormat</idl>)
;<tt>Level (Integer)</tt>:章名ないし章番号として表示させる章レベルを指定する。 指定値は 0 が最高レベルに該当します。
+
;<tt>Level (Integer)</tt>:Determina il livello del capitolo per il quale visualizzare nome e/o numero. Il valore 0 rappresenta il livello più alto disponibile.
  
== ブックマーク ==
+
== Segnalibri ==
  
ブックマーク (<idl>com.sun.star.text.Bookmark</idl> サービス) <tt>TextContent</tt> オブジェクトです。 このためテキスト\'83\'7dークの作成と\'91\'7d入も、すでに説明したものと同様の手順で行えます。
+
I segnalibri (servizio <idl>com.sun.star.text.Bookmark</idl>) sono oggetti <tt>TextContent</tt>. I segnalibri vengono creati e inseriti utilizzando il concetto seguente, già descritto in
 +
precedenza:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 463: Line 480:
 
</source>
 
</source>
  
このサンプルコードでは、ブックマークの挿入位置の指定用に <tt>Cursor</tt> というオブジェクトを作成してから、実際のブックマークオブジェクト (<tt>Bookmark</tt>) を作成しています。 このブックマークは、名前を付けてから、<tt>insertTextContent</tt> を用いてカーソル位置に挿入します。
+
L'esempio crea un <tt>Cursor</tt>, che contrassegna la posizione di inserimento del
 +
segnalibro e quindi l'effettivo oggetto segnalibro (<tt>Bookmark</tt>). Al segnalibro viene quindi assegnato un nome ed è inserito nel documento tramite <tt>insertTextContent</tt>, in corrispondenza della posizione del cursore.
  
ブックマークへのアクセスには、<tt>Bookmarks</tt> と呼ばれるリストを使用します。 また個々のテキスト\'83\'7dークは、番号または名前により特定できます。
+
È possibile accedere ai segnalibri di un testo tramite l'elenco denominato <tt>Bookmarks</tt>. Inoltre, potete accedere ai segnalibri per numero o per nome.
  
以下のサンプルコードでは、文書ドキュメント上で特定のブックマークを選択して、該当位置へテキストを挿入します。
+
L'esempio seguente mostra come individuare un segnalibro all'interno del testo e inserire un testo nella posizione corrispondente.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 482: Line 500:
 
</source>
 
</source>
  
ここでは <tt>getByName</tt> メソッドを用いて、ブックマークをその名前で特定しています。 そして <tt>createTextCursorByRange</tt> を用いて <tt>Cursor</tt> というオブジェクトを作成して、このブックマークのアンカー位置を取得します。 最後にこのカー\'83\'5cルの示す位置に、文字列を\'91\'7d入しています。
+
In questo esempio il metodo <tt>getByName</tt> è utilizzato per reperire il segnalibro richiesto tramite il nome. La chiamata <tt>createTextCursorByRange</tt> crea quindi un <tt>Cursor</tt>, che viene posizionato nella posizione di ancoraggio del segnalibro. Il cursore inserisce il testo richiesto in questo punto.
  
 
{{PDL1}}
 
{{PDL1}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/More Than Text}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/More Than Text}}

Revision as of 18:21, 25 June 2009

Template:EN/Documentation/BASICGuideTOC/v2

Fino a questo punto, nel capitolo sono stati trattati solo paragrafi di testo e relative parti. Tuttavia i documenti di testo possono contenere anche altri oggetti, tra cui tabelle, disegni, campi di testo e directory. Tutti questi oggetti possono essere ancorati a qualsiasi punto all'interno del testo.

Grazie a queste caratteristiche comuni, tutti questi oggetti supportano in Apache OpenOffice un servizio di base comune denominato com.sun.star.text.TextContent, che fornisce le seguenti proprietà:

AnchorType (Enum)
Determina il tipo di ancoraggio di un oggetto TextContent (valori predefiniti conformi all'enumerazione com.sun.star.text.TextContentAnchorType).
AnchorTypes (sequence of Enum)
Enumerazione di tutti gli AnchorTypes che supportano un oggetto TextContent speciale.
TextWrap (Enum)
Determina il tipo di scorrimento del testo attorno a un oggetto TextContent (valori predefiniti conformi all'enumerazione com.sun.star.text.WrapTextMode).

Gli oggetti TextContent condividono anche alcuni metodi, in particolare quelli per creare, inserire ed eliminare gli oggetti.

  • Per creare un nuovo oggetto TextContent' utilizzare il metodo createInstance dell'oggetto documento.
  • Per inserire un nuovo oggetto ' utilizzare il metodo insertTextContent dell'oggetto di testo.
  • Per eliminare un oggetto
                   TextContent' utilizzare il metodo removeTextContent.

Nelle sezioni seguenti viene presentata una serie di esempi che si avvalgono di questi metodi.

Tabelle

L'esempio seguente crea una tabella con l'ausilio del metodo createInstance descritto in precedenza.

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

Esempi Python:

def inset_img(): 
   # abstract the objects in varialbes, doc, text and img, note we used the XSCRIPTCONTEXT
   doc = XSCRIPTCONTEXT.getDocument() 
   text = doc.getText() 
   cursor = text.createTextCursor()  # not sure
   Table = doc.createInstance(u'com.sun.star.text.TextTable') 
 
   # Verify code
   Table.initialize(5, 4)
 
   #inser the image in the text area location    
   text.insertTextContent(text.getEnd(), Table, False)

Una volta creata, la tabella viene impostata sul numero di righe e colonne richieste utilizzando una chiamata initialize e quindi inserita nel documento di testo con insertTextContent.

                   .

Come illustrato nell'esempio, il metodo insertTextContent prevede non solo l'inserimento dell'oggetto Content, ma anche l'inserimento di altri due parametri:

  • un oggetto Cursor che determina la posizione di inserimento
  • una variabile booleana che specifica se l'oggetto Content deve sostituire la selezione corrente del cursore (valore True) o se deve essere inserito nel testo prima della selezione corrente (valore False).

Template:Documentation/Note

È possibile determinare le tabelle inserite in un documento di testo utilizzando un semplice ciclo. A tal fine è utilizzato il metodo getTextTables() dell'oggetto documento di testo:

Dim Doc As Object
Dim TextTables As Object
Dim Table As Object
Dim I As Integer
Doc = StarDesktop.CurrentComponent
TextTables = Doc.getTextTables()
For I = 0 to TextTables.count - 1
 
   Table = TextTables(I)
   ' Editing table
 
Next I

Template:Documentation/Note

Modifica delle tabelle

Una tabella è formata da singole righe che a loro volta contengono diverse celle. In senso stretto, in Apache OpenOffice non sono presenti colonne di tabelle, che vengono prodotte in modo implicito disponendo le righe (una sotto l'altra) una accanto all'altra. Per semplificare l'accesso alle tabelle, Apache OpenOffice fornisce tuttavia alcuni metodi che operano utilizzando le colonne e risultano di particolare utilità se nella tabella non si è eseguita l'unione di più celle.

Ma è opportuno osservare prima le proprietà della tabella stessa. Esse sono definite nel servizio com.sun.star.text.TextTable. Di seguito viene riportato un elenco delle più importanti proprietà dell'oggetto tabella:

BackColor (Long)
Colore di sfondo della tabella.
BottomMargin (Long)
Margine inferiore in centesimi di millimetro.
LeftMargin (Long)
Margine sinistro in centesimi di millimetro.
RightMargin (Long)
Margine destro in centesimi di millimetro.
TopMargin (Long)
Margine superiore in centesimi di millimetro.
RepeatHeadline (Boolean)
L'intestazione della tabella viene ripetuta su ogni pagina.
Width (Long)
Larghezza assoluta della tabella in centesimi di millimetro.

Righe

Una tabella è formata da un elenco contenente una serie di righe. L'esempio seguente mostra come richiamare e formattare le righe di una tabella.

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

In primo luogo l'esempio crea un elenco contenente tutte le righe utilizzando una chiamata Table.getRows. I metodi getCount e getByIndex consentono l'ulteriore elaborazione dell'elenco e appartengono all'interfaccia com.sun.star.table.XtableRows. Il metodo getByIndex restituisce un oggetto riga, che supporta il servizio com.sun.star.text.TextTableRow.

Di seguito vengono riportati i metodi principali dell'interfaccia com.sun.star.table.XtableRows:

getByIndex(Integer)
Restituisce un oggetto riga per l'indice specificato.
getCount()
Restituisce il numero di oggetti riga.
insertByIndex(Index, Count)
Inserisce un numero di righe pari a Count nella tabella alla posizione di Index.
removeByIndex(Index, Count)
Elimina un numero di righe pari a Count dalla tabella alla posizione di Index.

Mentre i metodi getByIndex e getCount sono disponibili in tutte le tabelle, i metodi insertByIndex e removeByIndex si possono utilizzare solo nelle tabelle che non contengono celle precedentemente unite.

Il servizio com.sun.star.text.TextTableRow fornisce le proprietà seguenti:

BackColor (Long)
Colore di sfondo della riga.
Height (Long)
Altezza della riga in centesimi di millimetro.
IsAutoHeight (Boolean)
L'altezza della tabella viene adattata dinamicamente al suo

contenuto.

VertOrient (const)
Orientamento verticale della cornice di testo – dettagli sull'orientamento verticale del testo all'interno della tabella (valori conformi a com.sun.star.text.VertOrientation)

Colonne

Per accedere alle colonne si procede come con le righe, utilizzando i metodi getByIndex, getCount, insertByIndex e removeByIndex sull'oggetto Column raggiungibile tramite getColumns. Li potrete però utilizzare solo nelle tabelle che non contengono celle precedentemente unite. In Apache OpenOffice Basic le celle non possono essere formattate per colonna. Per procedere comunque in tal senso, dovete avvalervi del metodo di formattazione delle singole celle della tabella.

Celle

Ogni cella di un documento di Apache OpenOffice ha un nome univoco. Se il cursore di Apache OpenOffice si trova in una cella, il nome della cella viene visualizzato nella barra di stato. La cella superiore sinistra è generalmente denominata A1, mentre quella inferiore destra è denominata Xn, dove X rappresenta le lettere della colonna superiore e n i numeri dell'ultima riga. Gli oggetti cella sono disponibili tramite il metodo getCellByName() dell'oggetto tabella. L'esempio seguente mostra un ciclo che vaglia tutte le celle di una tabella e inserisce i numeri di riga e colonna corrispondenti nelle celle.

Dim Doc As Object
Dim Table As Object
Dim Cursor As Object
Dim Rows As Object
Dim RowIndex As Integer
Dim Cols As Object
Dim ColIndex As Integer
Dim CellName As String
Dim Cell As Object
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
 
Table = Doc.createInstance("com.sun.star.text.TextTable")
Table.initialize(5, 4)
 
Doc.Text.insertTextContent(Cursor, Table, False)
 
Rows = Table.getRows
Cols = Table.getColumns
 
For RowIndex = 1 To Rows.getCount()
   For ColIndex = 1 To Cols.getCount()
      CellName = Chr(64 + ColIndex) & RowIndex
      Cell = Table.getCellByName(CellName)
      Cell.String = "row: " & CStr(RowIndex) + ", column: " & CStr(ColIndex)
   Next
Next

La cella di una tabella è paragonabile a un testo standard e supporta l'interfaccia createTextCursor per creare un oggetto TextCursor associato.

CellCursor = Cell.createTextCursor()

Tutte le opzioni di formattazione per i singoli caratteri e paragrafi sono quindi automaticamente disponibili.

L'esempio seguente esegue una ricerca in tutte le tabelle di un documento di testo e applica il formato allineato a destra a tutte le celle con valori numerici per mezzo della proprietà di paragrafo corrispondente.

Dim Doc As Object
Dim TextTables As Object
Dim Table As Object
Dim CellNames
Dim Cell As Object
Dim CellCursor As Object
Dim I As Integer
Dim J As Integer
 
Doc = StarDesktop.CurrentComponent
TextTables = Doc.getTextTables()
 
For I = 0 to TextTables.count - 1
   Table = TextTables(I)
   CellNames = Table.getCellNames()
 
   For J = 0 to UBound(CellNames)
      Cell = Table.getCellByName(CellNames(J))
      If IsNumeric(Cell.String) Then
         CellCursor = Cell.createTextCursor()
         CellCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
      End If
   Next
Next

L'esempio crea un elenco TextTables contenente tutte le tabelle di un testo attraversate nel ciclo. Apache OpenOffice crea quindi un elenco dei nomi delle celle associate per ognuna di queste tabelle, che vengono vagliate a turno nel ciclo. Se una cella contiene un valore numerico, l'esempio modifica la formattazione di conseguenza. Per procedere in tal senso, crea prima un oggetto TextCursor che fa riferimento al contenuto della cella della tabella, quindi adatta le proprietà del paragrafo alla cella.

Cornici di testo

Le cornici di testo sono considerate oggetti TextContent, proprio come le tabelle e i grafici e possono essere costituite essenzialmente da testo standard, sebbene siano collocabili in qualsiasi posizione della pagina e non vengano incluse nel flusso del testo.

Come con tutti gli oggetti TextContent, anche nelle cornici di testo si opera una distinzione tra creazione effettiva e inserimento nel documento.

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

Per creare la cornice di testo, utilizzate il metodo createInstance dell'oggetto documento. La cornice di testo così creata può essere poi inserita nel documento utilizzando il metodo insertTextContent dell'oggetto Text. In questa operazione dovrete specificare il nome del servizio com.sun.star.text.TextFrame corretto.

La posizione di inserimento della cornice di testo è determinata da un oggetto Cursor che viene inoltre eseguito all'inserimento.

Template:Documentation/Note

Gli oggetti cornice di testo forniscono una serie di proprietà con le quali influenzare la posizione e il funzionamento della cornice. La maggior parte di tali proprietà è definita nel servizio com.sun.star.text.BaseFrameProperties, che è supportato anche da ogni servizio TextFrame. Le proprietà principali sono le seguenti:

BackColor (Long)
Colore di sfondo della cornice di testo.
BottomMargin (Long)
Margine inferiore in centesimi di millimetro.
LeftMargin (Long)
Margine sinistro in centesimi di millimetro.
RightMargin (Long)
Margine destro in centesimi di millimetro.
TopMargin (Long)
Margine superiore in centesimi di millimetro.
Height (Long)
Altezza della cornice di testo in centesimi di millimetro.
Width (Long)
Larghezza della cornice di testo in centesimi di millimetro.
HoriOrient (const)
Orientamento orizzontale della cornice di testo (conforme a com.sun.star.text.HoriOrientation).
VertOrient (const)
Orientamento verticale della cornice di testo (conforme a com.sun.star.text.VertOrientation).

L'esempio seguente crea una cornice di testo utilizzando le proprietà descritte in precedenza:

Dim Doc As Object
Dim TextTables As Object
Dim Cursor As Object
Dim Frame As Object
 
Doc = StarDesktop.CurrentComponent
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)

L'esempio crea un TextCursor come segno di inserimento per la cornice di testo, posizionato tra la prima e la seconda parola del testo. La cornice di testo viene creata utilizzando Doc.createInstance. Le proprietà degli oggetti cornice di testo sono impostate sui valori iniziali richiesti.

Osservate l'interazione tra le proprietà AnchorType (dal servizio TextContent) e VertOrient (dal servizio BaseFrameProperties). AnchorType riceve il valore AS_CHARACTER. La cornice viene pertanto inserita direttamente nel flusso del testo e funziona come un carattere. Può, ad esempio, essere spostata nella riga successiva se si verifica un a capo. Il valore LINE_TOP della proprietà VertOrient garantisce che il bordo superiore della cornice di testo sia alla stessa altezza del bordo superiore del carattere.

Una volta completata l'inizializzazione, la cornice di testo viene infine inserita nel documento di testo utilizzando una chiamata da insertTextContent.

Per modificare il contenuto di una cornice di testo, l'utente si avvale del TextCursor, già citato varie volte e disponibile anche per le cornici di testo.

Dim Doc As Object
Dim TextTables As Object
Dim Cursor As Object
Dim Frame As Object
Dim FrameCursor As Object
 
Doc = StarDesktop.CurrentComponent
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 = "This is a small Test!"

L'esempio crea una cornice di testo, la inserisce nel documento corrente e apre un TextCursor per la cornice di testo. Questo cursore viene impiegato per impostare il carattere della cornice su grassetto e l'orientamento del paragrafo su centrato. Infine alla cornice di testo viene assegnata la stringa "This is a small test!" .

Campi di testo

I campi di testo sono oggetti TextContent, in quanto forniscono funzionalità addizionali che vanno oltre il semplice testo. Possono essere inseriti in un documento di testo utilizzando gli stessi metodi impiegati per gli altri oggetti TextContent:

Dim Doc As Object
Dim DateTimeField As Object
Dim Cursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
 
DateTimeField = Doc.createInstance("com.sun.star.text.TextField.DateTime")
DateTimeField.IsFixed = False
DateTimeField.IsDate = True
Doc.Text.insertTextContent(Cursor, DateTimeField, False)

L'esempio inserisce un campo di testo con la data corrente all'inizio del documento di testo corrente. Il valore True della proprietà IsDate produce la visualizzazione della sola data e non dell'ora. Il valore False per IsFixed garantisce che la data venga automaticamente aggiornata all'apertura del documento.

Template:Documentation/Note

In passato, si accedeva ai campi di testo utilizzando una serie completa di metodi resi disponibili da Apache OpenOffice nell'oggetto obsoleto Selection (ad esempio InsertField, DeleteUserField, SetCurField)).

In Apache OpenOffice 2.x, i campi vengono invece gestiti utilizzando un concetto orientato agli oggetti. Per creare un campo di testo, dovete prima creare un campo di testo del tipo richiesto e quindi inizializzarlo utilizzando le proprietà necessarie. Il campo di testo viene poi inserito nel documento con il metodo insertTextContent. Nell'esempio precedente è illustrato un testo sorgente corrispondente. I tipi di campi più importanti e le relative proprietà sono descritti nelle sezioni che seguono.

Oltre all'inserimento dei campi di testo, anche la ricerca dei campi in un documento può costituire un'attività importante. L'esempio seguente mostra come vagliare in un ciclo tutti i campi di testo di un documento di testo e controllarne il tipo di pertinenza.

Dim Doc As Object
Dim TextFieldEnum As Object
Dim TextField As Object
Dim I As Integer
 
Doc = StarDesktop.CurrentComponent
 
TextFieldEnum = Doc.getTextFields.createEnumeration
 
While TextFieldEnum.hasMoreElements()
 
   TextField = TextFieldEnum.nextElement()
 
   If TextField.supportsService("com.sun.star.text.TextField.DateTime") Then
      MsgBox "Date/time"
   ElseIf TextField.supportsService("com.sun.star.text.TextField.Annotation") Then
      MsgBox "Annotation"
   Else
      MsgBox "unknown"
   End If
 
Wend

Il punto iniziale per determinare i campi di testo presenti è l'elenco TextFields dell'oggetto documento. L'esempio crea un oggetto Enumeration sulla base di questo elenco, con il quale è possibile vagliare uno per volta tutti i campi di testo in un ciclo. I campi di testo individuati vengono controllati per verificare il servizio supportato utilizzando il metodo supportsService. Se il campo risulta essere del tipo per data/ora o annotazioni, il tipo di campo corrispondente viene visualizzato in una casella di informazioni. Se per contro l'esempio incontra un altro campo, visualizza l'informazione "sconosciuto".

Di seguito viene riportato un elenco dei campi di testo più importanti e delle relative proprietà associate. Un elenco completo di tutti i campi di testo è fornito nel riferimento dell'API nel modulo com.sun.star.text.TextField. (Per l'elencazione dei nomi di servizi di un campo di testo, utilizzate in Apache OpenOffice Basic caratteri in maiuscolo e in minuscolo, come nell'esempio precedente).

Numeri di pagine, parole e caratteri

I campi di testo

restituiscono il numero di pagine, parole e caratteri di un testo e supportano la proprietà seguente:

NumberingType (const)
formato di numerazione (regole conformi alle costanti di com.sun.star.style.NumberingType).

Pagina corrente

Il numero della pagina corrente può essere inserito nel documento utilizzando il campo di testo com.sun.star.text.TextField.PageNumber. È possibile specificare le proprietà seguenti:

NumberingType (const)
Formato numerico (regole conformi alle costanti di com.sun.star.style.NumberingType).
Offset (short)
Correzione aggiunta al numero di pagine (è possibile anche la specifica negativa).

L'esempio seguente mostra come inserire il numero di pagine nel piè di pagina di un documento.

Dim Doc As Object
Dim DateTimeField As Object
Dim PageStyles As Object
Dim StdPage As Object
Dim FooterCursor As Object
Dim PageNumber As Object
 
Doc = StarDesktop.CurrentComponent
 
PageNumber = Doc.createInstance("com.sun.star.text.TextField.PageNumber")
PageNumber.NumberingType = com.sun.star.style.NumberingType.ARABIC
 
PageStyles = Doc.StyleFamilies.getByName("PageStyles")
 
StdPage = PageStyles("Default")
StdPage.FooterIsOn = True
 
FooterCursor = StdPage.FooterTextLeft.Text.createTextCursor()
StdPage.FooterTextLeft.Text.insertTextContent(FooterCursor, PageNumber, False)

L'esempio crea prima un campo di testo che supporta il servizio com.sun.star.text.TextField.PageNumber. Poiché le righe di intestazione e piè di pagina sono definite come parte dei modelli di pagina di Apache OpenOffice, la determinazione iniziale viene effettuata utilizzando l'elenco di tutti i PageStyles.

Per garantire che la riga del piè di pagina sia visibile, la proprietà FooterIsOn è impostata su True. Il campo di testo viene quindi inserito nel documento utilizzando l'oggetto testo associato della riga del piè di pagina di sinistra.

Annotazioni

I campi di annotazioni (com.sun.star.text.TextField.Annotation) vengono visualizzati per mezzo di un simbolino giallo nel testo. Facendo clic su questo simbolo si apre un campo di testo, in cui potrete registrare un commento sul punto corrente nel testo. Un campo di annotazione possiede le seguenti proprietà:

Author (String)
nome dell'autore.
Content (String)
testo di commento.
Date (Date)
data in cui è scritta l'annotazione.

Data/ora

Un campo data/ora (com.sun.star.text.TextField.DateTime) rappresenta la data o l'ora correnti e supporta le proprietà seguenti:

IsFixed (Boolean)
Se è True, i dettagli dell'ora di inserimento rimangono invariati; se è False, vengono aggiornati a ogni apertura del documento.
IsDate (Boolean)
Se è True, il campo visualizza la data corrente, altrimenti l'ora

corrente.

DateTimeValue (struct)
Contenuto corrente del campo (struttura com.sun.star.util.DateTime)
NumberFormat (const)
Formato di visualizzazione dell'ora o della data.

Nome/numero del capitolo

Il nome del capitolo corrente è disponibile tramite un campo di testo del tipo com.sun.star.text.TextField.Chapter. La modalità può essere definita mediante due proprietà.

ChapterFormat (const)
Determina se è riportato il nome o il numero del capitolo (conformemente a com.sun.star.text.ChapterFormat)
Level (Integer)
Determina il livello del capitolo per il quale visualizzare nome e/o numero. Il valore 0 rappresenta il livello più alto disponibile.

Segnalibri

I segnalibri (servizio com.sun.star.text.Bookmark) sono oggetti TextContent. I segnalibri vengono creati e inseriti utilizzando il concetto seguente, già descritto in precedenza:

Dim Doc As Object
Dim Bookmark As Object
Dim Cursor As Object
 
Doc = StarDesktop.CurrentComponent
 
Cursor = Doc.Text.createTextCursor()
 
Bookmark = Doc.createInstance("com.sun.star.text.Bookmark")
Bookmark.Name = "My bookmarks"
Doc.Text.insertTextContent(Cursor, Bookmark, True)

L'esempio crea un Cursor, che contrassegna la posizione di inserimento del segnalibro e quindi l'effettivo oggetto segnalibro (Bookmark). Al segnalibro viene quindi assegnato un nome ed è inserito nel documento tramite insertTextContent, in corrispondenza della posizione del cursore.

È possibile accedere ai segnalibri di un testo tramite l'elenco denominato Bookmarks. Inoltre, potete accedere ai segnalibri per numero o per nome.

L'esempio seguente mostra come individuare un segnalibro all'interno del testo e inserire un testo nella posizione corrispondente.

Dim Doc As Object
Dim Bookmark As Object
Dim Cursor As Object
 
Doc = StarDesktop.CurrentComponent
 
Bookmark = Doc.Bookmarks.getByName("My bookmarks")
 
Cursor = Doc.Text.createTextCursorByRange(Bookmark.Anchor)
Cursor.String = "Here is the bookmark"

In questo esempio il metodo getByName è utilizzato per reperire il segnalibro richiesto tramite il nome. La chiamata createTextCursorByRange crea quindi un Cursor, che viene posizionato nella posizione di ancoraggio del segnalibro. Il cursore inserisce il testo richiesto in questo punto.

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