Difference between revisions of "EN/Documentation/BASIC Guide/Editing Text Documents"

From Apache OpenOffice Wiki
Jump to: navigation, search
(New page: {{DISPLAYTITLE:文書ドキュメントの編集}} {{EN/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentation/BASIC Guide/Structure of Text Documen...)
 
Line 1: Line 1:
{{DISPLAYTITLE:文書ドキュメントの編集}}
+
{{DISPLAYTITLE:Modifica dei documenti di testo}}
 
{{EN/Documentation/BASICGuideTOC/v2
 
{{EN/Documentation/BASICGuideTOC/v2
 
|ShowPrevNext=block
 
|ShowPrevNext=block
Line 8: Line 8:
 
}}
 
}}
 
   
 
   
文書ドキュメントの編集に関しては、すでに前節で、段落および段落部位へのアクセスを行う <idl>com.sun.star.text.TextPortion</idl> <idl>com.sun.star.text.Paragraph</idl> サービスを中心に説明しました。これらのサービスの利用が適しているのは、各ループごとに 1 度ずつテキストの編集を行うタイプの作業です。しかし、このような方式では対処し得ない処理も多く存在します。{{OOo}} に用意されている <idl>com.sun.star.text.TextCursor</idl> サービスは、ドキュメントを逆方向に遡って処理したり、センテンスや単語単位で操作するといった、より複雑な処理を行うためのもので、<tt>TextPortions</tt> を使うよりもこのような操作に適しています。
+
Nella sezione precedente è stata presentata una serie di opzioni per la modifica dei documenti di testo, concentrandosi sui servizi <idl>com.sun.star.text.TextPortion</idl> <idl>com.sun.star.text.Paragraph</idl>, che garantiscono l'accesso alle parti dei paragrafi nonché ai paragrafi stessi. Questi servizi sono idonei per le applicazioni in cui si deve modificare il contenuto di un testo in un unico passaggio, tramite l'uso di un ciclo. Ciò non è tuttavia sufficiente per molti problemi. {{OOo}} dispone del servizio <idl>com.sun.star.text.TextCursor</idl> per le operazioni più complicate, compreso lo spostamento a ritroso all'interno di un documento o lo spostamento basato su frasi e parole anziché su <tt>TextPortions</tt>.
  
== TextCursor ==
+
== Il TextCursor ==
  
<tt>TextCursor</tt>API {{OOo}} は、{{OOo}} ドキュメント上の操作で表示されるカーソルに該当するものです。これを使用すると、文書ドキュメント上の特定位置を操作対象に指定して、コ\'83\'7dンド指定による各種の選択処理を行うことができます。ただし、このような <tt>TextCursor</tt> Basic の {{OOo}} オブジェクトを、通常のカーソルと混同してはいけません。両者は、\'96\'7b質的に異なるものです。
+
Un <tt>TextCursor</tt> nell'API di {{OOo}} è paragonabile al cursore visibile utilizzato in un documento di {{OOo}}, ovvero contrassegna un determinato punto all'interno del documento di testo e può essere spostato in diverse direzioni tramite l'uso di comandi. Gli oggetti <tt>TextCursor</tt> disponibili in {{OOo}} Basic non vanno però confusi con il cursore visibile, in quanto si tratta di cose molto diverse.
  
{{Documentation/Note|VBA Range オブジェクトの機能に該当するものは、{{OOo}} の TextCursor オブジェクトであって、同じ名前を持つ {{OOo}} の Range オブジェクトに相当するものではありません。}}
+
{{Documentation/Note|La terminologia differisce da quella utilizzata in VBA: in termini di portata della funzione, l'oggetto Range di VBA può essere confrontato con l'oggetto TextCursor di {{OOo}} ma non, come sembrerebbe suggerire il nome, con l'oggetto Range di {{OOo}}.}}
  
たとえば、{{OOo}} の TextCursor オブジェクトはドキュメント内の移動やテキストの変更という機能を担っていますが、このような処理を VBA では Range オブジェクトで処理します (MoveStart、MoveEnd、InsertBefore、InsertAfterなど){{OOo}} の TextCursor オブジェクトに該当する機\'94\'5cは、以下の節で説明しています。
+
L'oggetto TextCursor di {{OOo}}, ad esempio, fornisce metodi per navigare e modificare il testo inclusi nell'oggetto Range in VBA (ad esempio, MoveStart, MoveEnd, InsertBefore, InsertAfter). Le controparti corrispondenti dell'oggetto
 +
TextCursor in {{OOo}} sono descritte nelle sezioni successive.
  
=== テキスト内の移動 ===
+
=== Spostamento all'interno di un testo ===
  
<tt>TextCursor</tt> Basic の {{OOo}} オブジェクトは、文書ドキュメント上に表示される通常のカーソルとは異なるものです。このため、<tt>TextCursor オブジェクトの\'95\'5c示位置をプログラム制御で変更しても、通常のカー\'83\'5cルは何の影響も受けません。</tt>また <tt>TextCursor</tt> オブジェクトは、同一オブジェクト上の異なる位置に複数オープンすることが可\'94\'5cで、相互に独立した形で個別制御できます。
+
L'oggetto <tt>TextCursor</tt> in {{OOo}} Basic agisce in modo indipendente dal cursore visibile di un documento di testo. Una modifica di posizione controllata dal
 +
programma di un oggetto <tt>TextCursor</tt> non ha alcun impatto sul cursore visibile. Si possono aprire diversi oggetti <tt>TextCursor</tt> per lo stesso documento e utilizzarli in diverse posizioni reciprocamente indipendenti.
  
<tt>TextCursor</tt> オブジェクトを作成するには、<tt>createTextCursor</tt> 呼び出しを使用します。
+
Un oggetto <tt>TextCursor</tt> viene creato utilizzando la chiamata <tt>createTextCursor</tt>:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 32: Line 34:
 
</source>
 
</source>
  
ここで作成した Cursor というオブジェクトは、<tt>com.sun.star.text.TextCursor</tt> サービスをサポートしており、文書ドキュメント内のテキストを移動するための各種メソッドを利用できます。たとえば以下のサンプルコードは、最初に <tt>TextCursor</tt> を 10 文字分左に移動してから、3 文字分右に移動します。
+
L'oggetto Cursor così creato supporta il servizio <tt>com.sun.star.text.TextCursor</tt>, che a sua volta fornisce un'intera gamma di metodi per spostarsi all'interno dei documenti di testo. L'esempio seguente prima sposta il <tt>TextCursor</tt> di dieci caratteri verso sinistra e quindi di tre caratteri verso destra:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 39: Line 41:
 
</source>
 
</source>
  
<tt>TextCursor</tt> は、選択範囲の強調表示にも使用できます。このような処理は、\'83\'7dウスでテキストの一部を選択して強調させる操作に相当します。上記のサンプルコードでパラメータとして渡した <tt>False は、オブジェクトの移動に伴う通過部分を強調\'95\'5c示させるかどうかの指定です。</tt>このような <tt>TextCursor</tt> の挙動は、以下のサンプルコードと対比させると分かりやすいでしょう。
+
Un <tt>TextCursor</tt> può evidenziare un'area completa, con un'operazione comparabile all'evidenziazione di un punto del testo tramite il mouse. Il parametro <tt>False</tt> nella chiamata di funzione precedente specifica se l'area attraversata con il movimento del cursore è evidenziata o meno. Ad esempio, il <tt>TextCursor</tt> nell'esempio seguente
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 46: Line 48:
 
</source>
 
</source>
  
この場合も最初に 10 文字分左に移動させてますが、このときは強調\'95\'5c示しないで、次に 3 文字分右に移動させる際には、強調\'95\'5c示するようにしています。つまりこのサンプルコードで <tt>TextCursor</tt> が強調\'95\'5c示するのは、最初の位置から 8 番目から 10 番目の文字までとなります。
+
si sposta prima di dieci caratteri verso destra senza evidenziazione e poi torna indietro di tre caratteri e procede a evidenziarli. L'area evidenziata dal <tt>TextCursor</tt> inizia pertanto dopo il settimo carattere del testo e termina dopo il decimo.
  
以下に、<idl>com.sun.star.text.TextCursor</idl> サービスの移動操作に用いる主要なメソッドを示します。
+
Di seguito vengono elencati i metodi principali forniti dal servizio <idl>com.sun.star.text.TextCursor</idl> per lo spostamento all'interno del testo:
  
;<tt>goLeft (Count, Expand)</tt>:Count 分の文字だけ左へ移動します。
+
;<tt>goLeft (Count, Expand)</tt>:Salta verso sinistra di un numero di caratteri pari a Count.
;<tt>goRight (Count, Expand)</tt>:Count 分の文字だけ右へ移動します。
+
;<tt>goRight (Count, Expand)</tt>:Salta verso destra di un numero di caratteri pari a Count.
;<tt>gotoStart (Expand)</tt>:文書ドキュメントの先頭に移動します。
+
;<tt>gotoStart (Expand)</tt>:Passa all'inizio del documento di testo.
;<tt>gotoEnd (Expand))</tt>:文書ドキュメントの末尾に移動します。
+
;<tt>gotoEnd (Expand)</tt>:Passa alla fine del documento di testo.
;<tt>gotoRange (TextRange, Expand)</tt>:<tt>TextRange</tt> の指定オブジェクトに移動します。
+
;<tt>gotoRange (TextRange, Expand)</tt>:Passa all'oggetto <tt>TextRange</tt> specificato.
;<tt>gotoStartOfWord (Expand)</tt>:現在位置にあるワード (単語) の先頭に移動します。
+
;<tt>gotoStartOfWord (Expand)</tt>:Passa all'inizio della parola corrente.
;<tt>gotoEndOfWord (Expand)</tt>:現在位置にあるワードの末尾に移動します。
+
;<tt>gotoEndOfWord (Expand)</tt>:Passa alla fine della parola corrente.
;<tt>gotoNextWord (Expand)</tt>:後ろにあるワードの先頭に移動します。
+
;<tt>gotoNextWord (Expand)</tt>:Passa all'inizio della parola successiva.
;<tt>gotoPreviousWord (Expand)</tt> 前にあるワードの先頭に移動します。
+
;<tt>gotoPreviousWord (Expand)</tt>:Passa all'inizio della parola precedente.
;<tt>isStartOfWord ()</tt>:<tt>True</tt> の位置がワードの先頭であれば <tt>TextCursor</tt> を返します。
+
;<tt>isStartOfWord ()</tt>:Restituisce <tt>True</tt> se il <tt>TextCursor</tt> è all'inizio di una parola.
;<tt>isEndOfWord ()</tt>:<tt>True</tt> の位置がワードの末尾であれば <tt>TextCursor</tt> を返します。
+
;<tt>isEndOfWord ()</tt>:Restituisce <tt>True</tt> se il <tt>TextCursor</tt> è alla fine di una parola.
;<tt>gotoStartOfSentence (Expand)</tt>:現在位置にあるセンテンス (文章) の先頭に移動します。
+
;<tt>gotoStartOfSentence (Expand)</tt>:Passa all'inizio della frase corrente.
;<tt>gotoEndOfSentence (Expand)</tt>:現在位置にあるセンテンスの末尾に移動します。
+
;<tt>gotoEndOfSentence (Expand)</tt>:Passa alla fine della frase corrente.
;<tt>gotoNextSentence (Expand)</tt>:後ろにあるセンテンスの先頭に移動します。
+
;<tt>gotoNextSentence (Expand)</tt>:Passa all'inizio della frase successiva.
;<tt>gotoPreviousSentence (Expand)</tt>:前にあるセンテンスの先頭に移動します。
+
;<tt>gotoPreviousSentence (Expand)</tt>:Passa alla fine della frase precedente.
;<tt>isStartOfSentence ()</tt>:<tt>True</tt> の位置がセンテンスの先頭であれば <tt>TextCursor</tt> を返します。
+
;<tt>isStartOfSentence ()</tt>:Restituisce <tt>True</tt> se il <tt>TextCursor</tt> è all'inizio di una frase.
;<tt>isEndOfSentence ()</tt>:<tt>True</tt> の位置がセンテンスの末尾であれば <tt>TextCursor</tt> を返します。
+
;<tt>isEndOfSentence ()</tt>:Restituisce <tt>True</tt> se il <tt>TextCursor</tt> è alla fine di una frase.
;<tt>gotoStartOfParagraph (Expand)</tt>:現在位置にあるパラグラフ (段落) の先頭に移動します。
+
;<tt>gotoStartOfParagraph (Expand)</tt>:Passa all'inizio del paragrafo corrente.
;<tt>gotoEndOfParagraph (Expand)</tt>:現在位置にあるパラグラフの末尾に移動します。
+
;<tt>gotoEndOfParagraph (Expand)</tt>:Passa alla fine del paragrafo corrente.
;<tt>gotoNextParagraph (Expand)</tt>:後ろにあるパラグラフの先頭に移動します。
+
;<tt>gotoNextParagraph (Expand)</tt>:Passa all'inizio del paragrafo successivo.
;<tt>gotoPreviousParagraph (Expand))</tt>:前にあるパラグラフの先頭に移動します。
+
;<tt>gotoPreviousParagraph (Expand)</tt>:Passa all'inizio del paragrafo precedente.
;<tt>isStartOfParagraph ()</tt>:<tt>True</tt> の位置がパラグラフの先頭であれば <tt>TextCursor</tt> を返します。
+
;<tt>isStartOfParagraph ()</tt>:Restituisce <tt>True</tt> se il <tt>TextCursor</tt> è all'inizio di un
;<tt>isEndOfParagraph ()</tt>:<tt>True</tt> の位置がパラグラフの末尾であれば <tt>TextCursor</tt> を返します。
+
paragrafo.
 +
;<tt>isEndOfParagraph ()</tt>:Restituisce <tt>True</tt> se il <tt>TextCursor</tt> alla fine di un
 +
paragrafo.
  
個々のセンテンス (文章) 間の区切りは、センテンス末を示す記号を基準に処理されます。たとえばピリオドは、このようなセンテンス末の記号として認識されます。
+
Il testo è suddiviso in frasi sulla base dei simboli di frase. I punti, ad esempio, sono interpretati come simboli indicanti la fine delle frasi.
  
<tt>Expand</tt> パラメータは、オブジェクトの移動に伴う通過部分を強調表示させるかを、ブール値を用いて指定します。またこれらの移動操作用メ\'83\'5cッドは、移動処理に成功したか、あるいは移動先となるテキスト位置の不在により処理が中断されたかを、戻り値として返します。
+
Il parametro <tt>Expand</tt> è un valore logico che specifica se l'area attraversata durante lo spostamento deve essere evidenziata o meno. Tutti i metodi di navigazione restituiscono inoltre un parametro che specifica se lo spostamento è riuscito o se l'azione è stata interrotta per mancanza di testo.
  
以下に、<idl>com.sun.star.text.TextCursor</idl> サービスをサポートし、<tt>TextCursor</tt> を使用して強調表示した範囲を編集する代表的なメソッドを示します。
+
Di seguito vengono elencati alcuni metodi per la modifica delle aree evidenziate utilizzando un <tt>TextCursor</tt> e che supportano anche il servizio <idl>com.sun.star.text.TextCursor</idl>:
  
;<tt>collapseToStart ()</tt>- <tt>TextCursor</tt> の位置を強調表示部分の先頭に移動し、強調表示を解除します。
+
;<tt>collapseToStart ()</tt>:Ripristina l'evidenziazione e posiziona il <tt>TextCursor</tt> all'inizio dell'area evidenziata in precedenza.
;<tt>collapseToEnd ()</tt>:<tt>TextCursor</tt> の位置を強調表示部分の末尾に移動し、強調表示を解除します。
+
;<tt>collapseToEnd ()</tt>:Ripristina l'evidenziazione e posiziona il <tt>TextCursor</tt> alla fine dell'area evidenziata in precedenza.
;<tt>isCollapsed ()</tt>:<tt>True</tt> による強調表示部分がなければ、<tt>TextCursor</tt> を返します。
+
;<tt>isCollapsed ()</tt>:Restituisce <tt>True</tt> se il <tt>TextCursor</tt> non copre attualmente alcuna evidenziazione.
  
===TextCursor によるテキストの書式設定===
+
=== Formattazione del testo con TextCursor ===
  
<idl>com.sun.star.text.TextCursor</idl> サービスは、本章の冒頭で説明した文字および段落関係の属性をすべてサポートしています。
+
Il servizio <idl>com.sun.star.text.TextCursor</idl> supporta tutte le proprietà di caratteri e paragrafi presentate all'inizio di questo capitolo.
  
以下のサンプルコードは、<tt>TextCursor</tt> を用いたこれらの使用例です。ここでは、ドキュメントの内容に順次アクセスして、各センテンスの先頭ワードに対して太字の書式を設定します。
+
L'esempio seguente mostra come utilizzarle insieme a <tt>TextCursor</tt>: vaglia un documento completo e formatta in grassetto la prima parola di ogni frase.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 106: Line 110:
 
</source>
 
</source>
  
このサンプルコードではまず、テキストの取得に使うドキュメントオブジェクトを作成しています。そして、ループを使ってセンテンス単位でテキストを読み取り、先頭ワードを強調\'95\'5c示して、太字の書式を設定します。
+
L'esempio crea prima un oggetto documento per il testo che era stato appena aperto. Quindi esegue un'iterazione dell'intero testo frase per frase, evidenzia ogni prima parola e le formatta in grassetto.
  
=== テキストの取得と変更 ===
+
=== Richiamo e modifica dei contenuti del testo ===
  
<tt>TextCursor</tt> による強調表示部分に対しては、<tt>String</tt> オブジェクトの <tt>TextCursor</tt> 属性によるテキスト操作が可能です。以下のサンプルコードでは、<tt>String</tt> 属性を用いて、センテンスの先頭ワードをメッセージ\'83\'7bックスに\'95\'5c示します。
+
Se il <tt>TextCursor</tt> contiene un'area evidenziata, il testo è disponibile tramite la proprietà <tt>String</tt> dell'oggetto <tt>TextCursor</tt>. L'esempio seguente utilizza la proprietà <tt>String</tt> per visualizzare le prime parole di una frase in una finestra di messaggio:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 128: Line 132:
 
</source>
 
</source>
  
このような <tt>String</tt> 属性を使った手法は、センテンスの先頭ワードを変更する場合にも利用できます。
+
Analogamente, potete modificare la prima parola di ogni frase avvalendovi della proprietà <tt>String</tt>:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 146: Line 150:
 
</source>
 
</source>
  
<tt>TextCursor</tt> によりテキストを強調表示した状態で、<tt>String</tt> 属性に文字列を代入すると、該当部のテキストが新規の文字列に置き換えられます。強調\'95\'5c示されていない場合、文字列は <tt>TextCursor</tt> 位置に\'91\'7d入されます。
+
Se il <tt>TextCursor</tt> contiene un'area evidenziata, un'assegnazione alla proprietà <tt>String</tt> permette di sostituirla con un nuovo testo. Se non vi sono aree evidenziate, il testo viene inserito in corrispondenza dell'attuale posizione del <tt>TextCursor</tt>.
  
=== 制御コードの\'91\'7d入 ===
+
=== Inserimento di codici di controllo ===
  
状況によっては、ドキュメント上に\'95\'5c示される実際のテキストではなく、\'95\'5c示形態の方を変更したい場合もあります。{{OOo}}は、このような\'95\'5c示形態の一部を制御コードを用いて処理します。これらの制御コードは、テキスト内に\'91\'7d入することで、その\'95\'5c示形態を整えます。個々の制御コードは <idl>com.sun.star.text.ControlCharacter</idl> で定数として定義されています。以下に、{{OOo}} で使用可能な制御コードを示します。
+
In alcune situazioni occorre modificare non tanto il testo di un documento, quanto la sua stessa struttura. {{OOo}} fornisce a tal fine speciali codici di controllo, inseriti nel testo e che ne influenzano la struttura. I codici di controllo sono definiti nel gruppo di
 +
costanti <idl>com.sun.star.text.ControlCharacter</idl>. Sono disponibili i seguenti codici in {{OOo}}:
  
;<tt>PARAGRAPH_BREAK</tt>:段落区切り。
+
;<tt>PARAGRAPH_BREAK</tt>:Interruzione di paragrafo.
;<tt>LINE_BREAK</tt>:段落内の行ブレーク。
+
;<tt>LINE_BREAK</tt>:Testo a capo all'interno di un paragrafo.
;<tt>SOFT_HYPHEN</tt>:ハイフネーションが可能な位置。
+
;<tt>SOFT_HYPHEN</tt>:Possibile punto di sillabazione.
;<tt>HARD_HYPHEN</tt>:ハイフネーションを強制する位置。
+
;<tt>HARD_HYPHEN</tt>:Punto di sillabazione obbligatorio.
;<tt>HARD_SPACE</tt>:ハードスペーステキストの行末調整に影響されないスペース (ハードスペース)。
+
;<tt>HARD_SPACE</tt>:Spazio protetto che non viene né distribuito né compresso nel testo giustificato.
  
制御コードを\'91\'7d入するには、\'91\'7d入位置だけではなく、該当するドキュメントオブジェクトも指定する必要があります。以下のサンプルコードでは、20 番目の文字の次に段落区切りを\'91\'7d入します。
+
Per inserire i codici di controllo, è necessario non solo il cursore ma anche gli oggetti documenti di testo associati. L'esempio seguente inserisce un paragrafo dopo il ventesimo carattere di un testo:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 172: Line 177:
 
</source>
 
</source>
  
<tt>False</tt> メソッドの呼び出しで、パラメータに <tt>insertControlCharacter</tt> を指定しているのは、挿入処理後も <tt>TextCursor</tt> による強調表示部分を保持させるためです。ここでパラメータに <tt>True</tt> を指定すると、<tt>insertControlCharacter</tt> は、該当部のテキストを置き換えます。
+
Il parametro <tt>False</tt> nella chiamata del metodo <tt>insertControlCharacter</tt> assicura che l'area attualmente evidenziata dal <tt>TextCursor</tt> permanga dopo l'operazione di inserimento. Se il parametro <tt>True</tt> viene trasmesso qui,<tt>insertControlCharacter</tt> sostituisce il testo corrente.
  
== テキスト部位の検索 ==
+
== Ricerca di parti del testo ==
  
使用頻度の高い操作として、文書ドキュメント内にある特定の文字列を検索して、その位置にあるテキストを編集するという処理があります。このような処理を行うため、すべての {{OOo}} ドキュメントには特殊なインターフェースが用意されていますが、このインターフェースによる検索を行う際は、<tt>SearchDescriptor と呼ばれるオブジェクトを事前に作成しておく必要があります。</tt>これにより、ドキュメントの検索する対象が {{ に指定されます。OOo}}<tt>SearchDescriptor</tt> <tt>com.sun.star.util.</tt> <tt>SearchDescriptor</tt> サービスをサポートしたオブジェクトで、以下のサンプルコードのように <tt>createSearchDescriptor</tt> メソッドを用いて作成します。
+
In molte situazioni, è necessario eseguire ricerche all'interno del testo per individuare un termine particolare e modificare il punto corrispondente. Tutti i documenti di {{OOo}} forniscono a tal fine una speciale interfaccia che opera sempre in conformità allo stesso principio: prima di un processo di ricerca, dovrete creare un <tt>SearchDescriptor</tt>, che definisce l'oggetto della ricerca di {{OOo}} all'interno del documento. Un <tt>SearchDescriptor</tt> è un oggetto che supporta il servizio <tt>com.sun.star.util.</tt> <tt>SearchDescriptor</tt> e che può essere creato utilizzando il metodo <tt>createSearchDescriptor</tt> di un documento:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 183: Line 188:
 
</source>
 
</source>
  
作成した <tt>SearchDescriptor</tt> に対しては、以下のようにして検索するテキストを指定します。
+
Una volta creato il <tt>SearchDescriptor</tt>, questo riceve il testo da cercare:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 189: Line 194:
 
</source>
 
</source>
  
このように <tt>SearchDescriptor</tt> は、通常の {{OOo}} 操作で使う検索ダイアログに相当する機能を担っています。また、検索ダイアログに各種の検索設定があるように、同様の設定を <tt>SearchDescriptor</tt> オブジェクトに対しても指定できます。
+
Per quanto riguarda la funzione espletata, il <tt>SearchDescriptor</tt> può essere paragonato alla finestra di dialogo di ricerca di {{OOo}}. Come in quel caso, è possibile inserire le impostazioni necessarie per la ricerca nell'oggetto <tt>SearchDescriptor</tt>.
  
このような属性は、<idl>com.sun.star.util.SearchDescriptor</idl> サービスに用意されています。
+
Le proprietà sono fornite dal servizio <idl>com.sun.star.util.SearchDescriptor</idl>:
  
;<tt>SearchBackwards (Boolean)</tt>:テキストを前方ではなく後方に向かって検索する指定。
+
;<tt>SearchBackwards (Boolean)</tt>:Esegue la ricerca nel testo a ritroso invece che in avanti.
;<tt>SearchCaseSensitive (Boolean)</tt>:検索をする際に大文字と小文字を区別する指定。
+
;<tt>SearchCaseSensitive (Boolean)</tt>:Prende in considerazione i caratteri maiuscoli e minuscoli durante la ricerca.
;<tt>SearchRegularExpression (Boolean)</tt>:検索式を正規表現として扱う指定。
+
;<tt>SearchRegularExpression (Boolean)</tt>:Tratta l'espressione di ricerca come un'espressione regolare.
;<tt>SearchStyles (Boolean)</tt>:指定した段落テンプレートを検索する指定。
+
;<tt>SearchStyles (Boolean)</tt>:Ricerca il modello di paragrafo specificato all'interno del testo.
;<tt>SearchWords (Boolean)</tt>- 完全なワードのみを検索する指定。
+
;<tt>SearchWords (Boolean)</tt>:Ricerca solo parole complete.
  
{{OOo}} Basic では、{{OOo}} <tt>SearchSimilarity</tt> (いわゆる「ファジーマッチ」) 機能を利用できます。この機\'94\'5cを使うと、指定文字列と類似した文字列を {{ に検索させることができます。OOo}}このような検索を行う際には、オリジナルの検索文字列に対して追加、削除、変更可\'94\'5cな文字数をそれぞれ指定できます。このような指定には、以下に示す <tt>com.sun.star.util.SearchDescriptor</tt> サービスの関連属性を使用します。
+
La funzione {{OOo}} <tt>SearchSimilarity</tt> (o "ricerca per analogia") è disponibile anche in {{OOo}} Basic. Con questa funzione, {{OOo}} ricerca un'espressione che può essere analoga ma non esattamente uguale all'espressione di ricerca. Il numero di caratteri addizionali, eliminati e modificati per queste espressioni può essere definito singolarmente. Di seguito vengono riportate le proprietà associate al servizio <tt>com.sun.star.util.SearchDescriptor</tt>:
  
;<tt>SearchSimilarity (Boolean)</tt>:類似検索を実行する指定。
+
;<tt>SearchSimilarity (Boolean)</tt>:Esegue una ricerca per analogia.
;<tt>SearchSimilarityAdd (Short)</tt>:類似検索での追加可能な文字数の指定。
+
;<tt>SearchSimilarityAdd (Short)</tt>:Numero di caratteri che potete aggiungere per una ricerca per analogia.
;<tt>SearchSimilarityExchange (Short)</tt>:類似検索での置換可能な文字数の指定。
+
;<tt>SearchSimilarityExchange (Short)</tt>:Numero di caratteri che potete sostituire come parte di una ricerca per analogia.
;<tt>SearchSimilarityRemove (Short)</tt>:類似検索での削除可能な文字数の指定。
+
;<tt>SearchSimilarityRemove (Short)</tt>:Numero di caratteri che potete rimuovere come parte di una ricerca per analogia.
;<tt>SearchSimilarityRelax (Boolean)</tt>:類似検索の変動規則を適用する指定。
+
;<tt>SearchSimilarityRelax (Boolean)</tt>:Prende in considerazione tutte le regole di deviazione contemporaneamente all'espressione di ricerca.
  
<tt>SearchDescriptor</tt> に関する必要な指定の終了後、文書ドキュメントに対する検索を実行します。このような処理には、{{OOo}} に用意されている <tt>findFirst</tt> および <tt>findNext メ\'83\'5cッドを使用します。</tt>
+
Una volta preparato il <tt>SearchDescriptor</tt> come richiesto, è possibile applicarlo al documento di testo. I documenti di {{OOo}} dispongono a tal fine dei metodi <tt>findFirst</tt> e <tt>findNext</tt>:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 218: Line 223:
 
</source>
 
</source>
  
このサンプルコードでは、ループを使って検索該当箇所をすべて探し、検索にヒットしたテキストを参照する <tt>TextRange</tt> オブジェクトを取得しています。
+
L'esempio individua tutte le corrispondenze in un ciclo e restituisce un oggetto <tt>TextRange</tt>, che si riferisce al passaggio di testo reperito.
  
===: 類似検索===
+
=== Esempio: ricerca per simili ===
  
以下のサンプルコードは、「turnover」という単語を検索して、該当箇所に太字の書式を設定します。ここでは類似検索を用いて、「turnover」に完全に一致するものだけでなく、複数形の「turnovers」を始め「turnover's」なども検索にヒットするようにしています。なお類似性の度合いとしては、オリジナルの検索文字列に対して 2 文字までの違いを許容させることにします。
+
Questo esempio mostra come ricercare in un testo la parola "viaggi" e formattare i risultati in grassetto. Viene utilizzata una ricerca per analogia in modo da reperire non solo il termine "viaggi", ma anche la forma singolare "viaggio" e le eventuali declinazioni, come "viaggiare". Le espressioni individuate differiscono di un massimo di tre lettere dall'espressione di ricerca:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 244: Line 249:
 
</source>
 
</source>
  
{{Documentation/Note|{{OOo}} で検索と置換の処理を行う場合、その基本的な考えは VBA と同じです。どちらも、検索と置換に使用する属性を 1 つのオブジェクトに収めることにより指定します。そして、このオブジェクトを処理対象のテキスト範囲に対して渡すことにより検索や置換の実際の処理を開始します。ただしこのような補助オブジェクトは、VBA では Range オブジェクトの Find 属性で処理できるのに対して、{{OOo}} Basic では、ドキュメントオブジェクト側から <tt>createSearchDescriptor</tt> または <tt>createReplaceDescriptor</tt> を呼び出して作成する必要があります。その他、検索用の属性やメ\'83\'5cッドにも違いがあります。}}
+
{{Documentation/Note|L'idea base della ricerca e sostituzione in {{OOo}} è paragonabile a quella
 +
utilizzata in VBA. Entrambe le interfacce forniscono un oggetto, attraverso il quale si possono definire le proprietà di ricerca e sostituzione. Questo oggetto viene quindi applicato all'area di testo richiesta per eseguire l'azione. Mentre l'oggetto ausiliare responsabile in VBA può essere raggiunto tramite la proprietà Find dell'oggetto Range, in {{OOo}} Basic viene creato dalla chiamata <tt>createSearchDescriptor</tt> o <tt>createReplaceDescriptor</tt> dell'oggetto documento. Persino le proprietà e i metodi di ricerca disponibili differiscono.}}
  
従来の {{OOo}} API 同様に現行の API でも、テキストの検索や置換は、ドキュメントオブジェクトを通じて実行します。ただし従来は、検索オプションの指定などを <tt>SearchSettings</tt> というオブジェクトで行なっていましたが、現在はテキストの置換処理用に用意された <tt>SearchDescriptor</tt> および <tt>ReplaceDescriptor オブジェクトを使用します。</tt>これらのオブジェクトには、検索オプションだけでなく、検索文字列を指定することが可\'94\'5cで、必要であれば置換文字列も格納できます。これらのオプション指定用オブジェクトは、ドキュメントオブジェクトを用いて作成してから、必要なオプション値を代入し、検索メ\'83\'5cッド用のパラメータの形でドキュメントオブジェクトに引き渡します。
+
Come nella vecchia API di {{OOo}}, anche nella nuova API la ricerca e la sostituzione di testo vengono eseguite utilizzando l'oggetto documento. Mentre però in precedenza esisteva un oggetto denominato <tt>SearchSettings</tt> dedicato alla definizione delle opzioni di ricerca, le nuove ricerche di oggetti vengono ora eseguite utilizzando un
 +
oggetto <tt>SearchDescriptor</tt> o <tt>ReplaceDescriptor</tt> per la sostituzione automatica del testo. Questi oggetti coprono non solo le opzioni, ma anche il testo di ricerca corrente e, se necessario, la sostituzione di testo associata. Gli oggetti descrittori vengono creati utilizzando l'oggetto documento, completati in conformità ai requisiti pertinenti e quindi nuovamente trasferiti all'oggetto documento sotto forma di parametri per i metodi di ricerca.
  
== テキスト部位の置換 ==
+
== Sostituzione di parti del testo ==
  
検索の場合と同様、{{OOo}} で行う通常の置換操作も、{{OOo}} Basic 上で実行できます。 置換処理に必要な手順は、検索処理の場合と基\'96\'7b的に同じです。置換の場合も、最初にオプション指定用の特殊オブジェクトを作成します。このオブジェクトは <tt>ReplaceDescriptor</tt> と呼ばれ、<idl>com.sun.star.util.ReplaceDescriptor</idl> サービスをサポートしています。これまでの節で説明した <tt>SearchDescriptor</tt> のすべての属性は、<tt>ReplaceDescriptor.</tt> によってサポートされています。たとえば、置換処理中、大文字と小文字の区別は有効にも無効にもすることができ、類似検索を実行できます。
+
Proprio come la funzione di ricerca, la funzione di sostituzione di {{OOo}} è disponibile anche in {{OOo}} Basic. La gestione delle due funzioni è identica: anche per il processo di sostituzione è necessario per prima cosa un oggetto speciale che registri i parametri del processo. È denominato <tt>ReplaceDescriptor</tt> e supporta il servizio <idl>com.sun.star.util.ReplaceDescriptor</idl>. Tutte le proprietà del <tt>SearchDescriptor</tt> descritte nel paragrafo precedente sono supportate anche da <tt>ReplaceDescriptor.</tt>. Ad esempio, durante un processo di sostituzione, potete attivare e disattivare la distinzione tra maiuscole e minuscole ed eseguire ricerche per analogia.
  
以下のサンプルコードは、<tt>ReplaceDescriptors</tt> を使用した {{OOo}} ドキュメント上での検索処理を示します。
+
L'esempio seguente dimostra l'uso di <tt>ReplaceDescriptors</tt> per una ricerca all'interno di un documento di {{OOo}}.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 276: Line 283:
 
</source>
 
</source>
  
検索文字列および置換文字列は、<tt>SearchString</tt> <tt>ReplaceString</tt> および <tt>ReplaceDescriptors</tt> 属性を使って指定します。実際の置換処理では、ドキュメントオブジェクトの <tt>replaceAll</tt> メ\'83\'5cッドを使用することで、該当文字列を一括置換できます。
+
Le espressioni di ricerca e sostituzione vengono impostate utilizzando le proprietà <tt>SearchString</tt> e <tt>ReplaceString</tt> dei <tt>ReplaceDescriptors</tt>. Il processo effettivo di sostituzione è infine implementato utilizzando il metodo <tt>replaceAll</tt> dell'oggetto documento, che sostituisce tutte le ricorrenze dell'espressione di ricerca.
  
===: 正規\'95\'5c現による検索と置換===
+
=== Esempio: ricerca e sostituzione del testo con le espressioni regolari ===
  
{{OOo}} の置換機能は、正規表現と併用することで、より複雑な処理を行えるようになります。正規\'95\'5c現とは、通常の固定された検索文字列の代わりに、プレースホルダや特殊記号から成る検索式を用いた、いわゆるパターン\'83\'7dッチングのことです。
+
La funzione di sostituzione di {{OOo}} è particolarmente efficace quando utilizzata assieme alle espressioni regolari. Queste ultime vi consentiranno infatti di definire un'espressione di ricerca variabile con segnaposto e caratteri speciali al posto di un
 +
valore fisso.
  
{{OOo}} で使用可能な正規表現の詳細情報については、{{OOo}} のオンラインヘルプを参照してください。ここでは、いくつかの例を紹介します。
+
Le espressioni regolari supportate da {{OOo}} sono descritte in dettaglio nella sezione della guida in linea di {{OOo}}. Di seguito vengono riportati alcuni esempi:
  
*検索式内のピリオド記号は、任意の文字に一致します。たとえば sh.rt という検索式は、<tt>shirt</tt> にも <tt>short</tt> にも一致します。
+
* Un punto all'interno di un'espressione di ricerca rappresenta qualsiasi carattere. L'espressione di ricerca sh.rt può quindi rappresentare sia <tt>shirt</tt> che <tt>short</tt>.
*検索式内の ^ 記号は、段落の先頭に一致します。たとえば <tt>Peter</tt> という検索式は、<tt>^Peter</tt>が先頭にあるすべての段落に一致します。
+
* Il carattere ^ contrassegna l'inizio di un paragrafo. Tutte le ricorrenze del nome <tt>Peter</tt> che si trovano all'inizio di un paragrafo possono pertanto essere reperite
*検索式内の $ 記号は、段落の末尾に一致します。たとえば <tt>Peter</tt> という検索式は、<tt>Peter$</tt> が末尾にあるすべての段落に一致します。
+
utilizzando l'espressione di ricerca <tt>^Peter</tt>.
*検索式内の * 記号は、直前の文字の任意回数の繰り返しを意味します。これをピリオド記号の次に置くと、任意の文字列に一致するプレースホルダとなります。たとえば <tt>temper.*e</tt> という検索式は、<tt>temperance</tt> にも <tt>temperature</tt> にも一致します。
+
* Il carattere $ contrassegna la fine di un paragrafo. Tutte le ricorrenze del nome <tt>Peter</tt> che si trovano alla fine di un paragrafo possono pertanto essere reperite
 +
utilizzando l'espressione di ricerca <tt>Peter$</tt>.
 +
* Un * indica che il carattere precedente può essere ripetuto a piacere e può essere combinato con il punto come segnaposto per qualsiasi carattere. L'espressione <tt>temper.*e</tt>, ad esempio, può rappresentare sia l'espressione <tt>temperance</tt> che <tt>temperature</tt>.
  
以下のサンプルコードでは、^$ という正規\'95\'5c現を用いて、文書ドキュメント内の空白行を削除します。
+
L'esempio seguente mostra come rimuovere tutte le righe vuote di un documento di testo con l'ausilio dell'espressione regolare ^$:
  
 
<source lang="oobas">
 
<source lang="oobas">

Revision as of 18:21, 25 June 2009

Template:EN/Documentation/BASICGuideTOC/v2

Nella sezione precedente è stata presentata una serie di opzioni per la modifica dei documenti di testo, concentrandosi sui servizi com.sun.star.text.TextPortion e com.sun.star.text.Paragraph, che garantiscono l'accesso alle parti dei paragrafi nonché ai paragrafi stessi. Questi servizi sono idonei per le applicazioni in cui si deve modificare il contenuto di un testo in un unico passaggio, tramite l'uso di un ciclo. Ciò non è tuttavia sufficiente per molti problemi. Apache OpenOffice dispone del servizio com.sun.star.text.TextCursor per le operazioni più complicate, compreso lo spostamento a ritroso all'interno di un documento o lo spostamento basato su frasi e parole anziché su TextPortions.

Il TextCursor

Un TextCursor nell'API di Apache OpenOffice è paragonabile al cursore visibile utilizzato in un documento di Apache OpenOffice, ovvero contrassegna un determinato punto all'interno del documento di testo e può essere spostato in diverse direzioni tramite l'uso di comandi. Gli oggetti TextCursor disponibili in Apache OpenOffice Basic non vanno però confusi con il cursore visibile, in quanto si tratta di cose molto diverse.

Template:Documentation/Note

L'oggetto TextCursor di Apache OpenOffice, ad esempio, fornisce metodi per navigare e modificare il testo inclusi nell'oggetto Range in VBA (ad esempio, MoveStart, MoveEnd, InsertBefore, InsertAfter). Le controparti corrispondenti dell'oggetto TextCursor in Apache OpenOffice sono descritte nelle sezioni successive.

Spostamento all'interno di un testo

L'oggetto TextCursor in Apache OpenOffice Basic agisce in modo indipendente dal cursore visibile di un documento di testo. Una modifica di posizione controllata dal programma di un oggetto TextCursor non ha alcun impatto sul cursore visibile. Si possono aprire diversi oggetti TextCursor per lo stesso documento e utilizzarli in diverse posizioni reciprocamente indipendenti.

Un oggetto TextCursor viene creato utilizzando la chiamata createTextCursor:

Dim Doc As Object
Dim Cursor As Object
 
Doc = StarDesktop.CurrentComponent
Cursor = TextDocument.Text.createTextCursor()

L'oggetto Cursor così creato supporta il servizio com.sun.star.text.TextCursor, che a sua volta fornisce un'intera gamma di metodi per spostarsi all'interno dei documenti di testo. L'esempio seguente prima sposta il TextCursor di dieci caratteri verso sinistra e quindi di tre caratteri verso destra:

Cursor.goLeft(10, False)
Cursor.goRight(3, False)

Un TextCursor può evidenziare un'area completa, con un'operazione comparabile all'evidenziazione di un punto del testo tramite il mouse. Il parametro False nella chiamata di funzione precedente specifica se l'area attraversata con il movimento del cursore è evidenziata o meno. Ad esempio, il TextCursor nell'esempio seguente

Cursor.goLeft(10, False)
Cursor.goRight(3, True)

si sposta prima di dieci caratteri verso destra senza evidenziazione e poi torna indietro di tre caratteri e procede a evidenziarli. L'area evidenziata dal TextCursor inizia pertanto dopo il settimo carattere del testo e termina dopo il decimo.

Di seguito vengono elencati i metodi principali forniti dal servizio com.sun.star.text.TextCursor per lo spostamento all'interno del testo:

goLeft (Count, Expand)
Salta verso sinistra di un numero di caratteri pari a Count.
goRight (Count, Expand)
Salta verso destra di un numero di caratteri pari a Count.
gotoStart (Expand)
Passa all'inizio del documento di testo.
gotoEnd (Expand)
Passa alla fine del documento di testo.
gotoRange (TextRange, Expand)
Passa all'oggetto TextRange specificato.
gotoStartOfWord (Expand)
Passa all'inizio della parola corrente.
gotoEndOfWord (Expand)
Passa alla fine della parola corrente.
gotoNextWord (Expand)
Passa all'inizio della parola successiva.
gotoPreviousWord (Expand)
Passa all'inizio della parola precedente.
isStartOfWord ()
Restituisce True se il TextCursor è all'inizio di una parola.
isEndOfWord ()
Restituisce True se il TextCursor è alla fine di una parola.
gotoStartOfSentence (Expand)
Passa all'inizio della frase corrente.
gotoEndOfSentence (Expand)
Passa alla fine della frase corrente.
gotoNextSentence (Expand)
Passa all'inizio della frase successiva.
gotoPreviousSentence (Expand)
Passa alla fine della frase precedente.
isStartOfSentence ()
Restituisce True se il TextCursor è all'inizio di una frase.
isEndOfSentence ()
Restituisce True se il TextCursor è alla fine di una frase.
gotoStartOfParagraph (Expand)
Passa all'inizio del paragrafo corrente.
gotoEndOfParagraph (Expand)
Passa alla fine del paragrafo corrente.
gotoNextParagraph (Expand)
Passa all'inizio del paragrafo successivo.
gotoPreviousParagraph (Expand)
Passa all'inizio del paragrafo precedente.
isStartOfParagraph ()
Restituisce True se il TextCursor è all'inizio di un

paragrafo.

isEndOfParagraph ()
Restituisce True se il TextCursor alla fine di un

paragrafo.

Il testo è suddiviso in frasi sulla base dei simboli di frase. I punti, ad esempio, sono interpretati come simboli indicanti la fine delle frasi.

Il parametro Expand è un valore logico che specifica se l'area attraversata durante lo spostamento deve essere evidenziata o meno. Tutti i metodi di navigazione restituiscono inoltre un parametro che specifica se lo spostamento è riuscito o se l'azione è stata interrotta per mancanza di testo.

Di seguito vengono elencati alcuni metodi per la modifica delle aree evidenziate utilizzando un TextCursor e che supportano anche il servizio com.sun.star.text.TextCursor:

collapseToStart ()
Ripristina l'evidenziazione e posiziona il TextCursor all'inizio dell'area evidenziata in precedenza.
collapseToEnd ()
Ripristina l'evidenziazione e posiziona il TextCursor alla fine dell'area evidenziata in precedenza.
isCollapsed ()
Restituisce True se il TextCursor non copre attualmente alcuna evidenziazione.

Formattazione del testo con TextCursor

Il servizio com.sun.star.text.TextCursor supporta tutte le proprietà di caratteri e paragrafi presentate all'inizio di questo capitolo.

L'esempio seguente mostra come utilizzarle insieme a TextCursor: vaglia un documento completo e formatta in grassetto la prima parola di ogni frase.

Dim Doc As Object   
Dim Cursor As Object
Dim Proceed As Boolean
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor
 
Do 
  Cursor.gotoEndOfWord(True)
  Cursor.CharWeight = com.sun.star.awt.FontWeight.BOLD
  Proceed = Cursor.gotoNextSentence(False)
  Cursor.gotoNextWord(False)
Loop While Proceed

L'esempio crea prima un oggetto documento per il testo che era stato appena aperto. Quindi esegue un'iterazione dell'intero testo frase per frase, evidenzia ogni prima parola e le formatta in grassetto.

Richiamo e modifica dei contenuti del testo

Se il TextCursor contiene un'area evidenziata, il testo è disponibile tramite la proprietà String dell'oggetto TextCursor. L'esempio seguente utilizza la proprietà String per visualizzare le prime parole di una frase in una finestra di messaggio:

Dim Doc As Object   
Dim Cursor As Object
Dim Proceed As Boolean
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor
 
Do 
  Cursor.gotoEndOfWord(True)
  MsgBox Cursor.String
  Proceed = Cursor.gotoNextSentence(False)
  Cursor.gotoNextWord(False)
Loop While Proceed

Analogamente, potete modificare la prima parola di ogni frase avvalendovi della proprietà String:

Dim Doc As Object   
Dim Cursor As Object
Dim Proceed As Boolean
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor
 
Do 
  Cursor.gotoEndOfWord(True)
  Cursor.String = "Ups"
  Proceed = Cursor.gotoNextSentence(False)
  Cursor.gotoNextWord(False)
Loop While Proceed

Se il TextCursor contiene un'area evidenziata, un'assegnazione alla proprietà String permette di sostituirla con un nuovo testo. Se non vi sono aree evidenziate, il testo viene inserito in corrispondenza dell'attuale posizione del TextCursor.

Inserimento di codici di controllo

In alcune situazioni occorre modificare non tanto il testo di un documento, quanto la sua stessa struttura. Apache OpenOffice fornisce a tal fine speciali codici di controllo, inseriti nel testo e che ne influenzano la struttura. I codici di controllo sono definiti nel gruppo di costanti com.sun.star.text.ControlCharacter. Sono disponibili i seguenti codici in Apache OpenOffice:

PARAGRAPH_BREAK
Interruzione di paragrafo.
LINE_BREAK
Testo a capo all'interno di un paragrafo.
SOFT_HYPHEN
Possibile punto di sillabazione.
HARD_HYPHEN
Punto di sillabazione obbligatorio.
HARD_SPACE
Spazio protetto che non viene né distribuito né compresso nel testo giustificato.

Per inserire i codici di controllo, è necessario non solo il cursore ma anche gli oggetti documenti di testo associati. L'esempio seguente inserisce un paragrafo dopo il ventesimo carattere di un testo:

Dim Doc As Object   
Dim Cursor As Object
Dim Proceed As Boolean
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor
Cursor.goRight(20, False)
Doc.Text.insertControlCharacter(Cursor, _
    com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)

Il parametro False nella chiamata del metodo insertControlCharacter assicura che l'area attualmente evidenziata dal TextCursor permanga dopo l'operazione di inserimento. Se il parametro True viene trasmesso qui,insertControlCharacter sostituisce il testo corrente.

Ricerca di parti del testo

In molte situazioni, è necessario eseguire ricerche all'interno del testo per individuare un termine particolare e modificare il punto corrispondente. Tutti i documenti di Apache OpenOffice forniscono a tal fine una speciale interfaccia che opera sempre in conformità allo stesso principio: prima di un processo di ricerca, dovrete creare un SearchDescriptor, che definisce l'oggetto della ricerca di Apache OpenOffice all'interno del documento. Un SearchDescriptor è un oggetto che supporta il servizio com.sun.star.util. SearchDescriptor e che può essere creato utilizzando il metodo createSearchDescriptor di un documento:

Dim SearchDesc As Object
SearchDesc = Doc.createSearchDescriptor

Una volta creato il SearchDescriptor, questo riceve il testo da cercare:

SearchDesc.searchString="any text"

Per quanto riguarda la funzione espletata, il SearchDescriptor può essere paragonato alla finestra di dialogo di ricerca di Apache OpenOffice. Come in quel caso, è possibile inserire le impostazioni necessarie per la ricerca nell'oggetto SearchDescriptor.

Le proprietà sono fornite dal servizio com.sun.star.util.SearchDescriptor:

SearchBackwards (Boolean)
Esegue la ricerca nel testo a ritroso invece che in avanti.
SearchCaseSensitive (Boolean)
Prende in considerazione i caratteri maiuscoli e minuscoli durante la ricerca.
SearchRegularExpression (Boolean)
Tratta l'espressione di ricerca come un'espressione regolare.
SearchStyles (Boolean)
Ricerca il modello di paragrafo specificato all'interno del testo.
SearchWords (Boolean)
Ricerca solo parole complete.

La funzione Apache OpenOffice SearchSimilarity (o "ricerca per analogia") è disponibile anche in Apache OpenOffice Basic. Con questa funzione, Apache OpenOffice ricerca un'espressione che può essere analoga ma non esattamente uguale all'espressione di ricerca. Il numero di caratteri addizionali, eliminati e modificati per queste espressioni può essere definito singolarmente. Di seguito vengono riportate le proprietà associate al servizio com.sun.star.util.SearchDescriptor:

SearchSimilarity (Boolean)
Esegue una ricerca per analogia.
SearchSimilarityAdd (Short)
Numero di caratteri che potete aggiungere per una ricerca per analogia.
SearchSimilarityExchange (Short)
Numero di caratteri che potete sostituire come parte di una ricerca per analogia.
SearchSimilarityRemove (Short)
Numero di caratteri che potete rimuovere come parte di una ricerca per analogia.
SearchSimilarityRelax (Boolean)
Prende in considerazione tutte le regole di deviazione contemporaneamente all'espressione di ricerca.

Una volta preparato il SearchDescriptor come richiesto, è possibile applicarlo al documento di testo. I documenti di Apache OpenOffice dispongono a tal fine dei metodi findFirst e findNext:

Found = Doc.findFirst (SearchDesc)
 
Do While Found
  ' Suchergebnis bearbeiten
  Found = Doc.findNext( Found.End, Search)
Loop

L'esempio individua tutte le corrispondenze in un ciclo e restituisce un oggetto TextRange, che si riferisce al passaggio di testo reperito.

Esempio: ricerca per simili

Questo esempio mostra come ricercare in un testo la parola "viaggi" e formattare i risultati in grassetto. Viene utilizzata una ricerca per analogia in modo da reperire non solo il termine "viaggi", ma anche la forma singolare "viaggio" e le eventuali declinazioni, come "viaggiare". Le espressioni individuate differiscono di un massimo di tre lettere dall'espressione di ricerca:

Dim SearchDesc As Object
Dim Doc As Object
 
Doc = StarDesktop.CurrentComponent
SearchDesc = Doc.createSearchDescriptor
SearchDesc.SearchString="turnover"
SearchDesc.SearchSimilarity = True
SearchDesc.SearchSimilarityAdd = 2
SearchDesc.SearchSimilarityExchange = 2
SearchDesc.SearchSimilarityRemove = 2
SearchDesc.SearchSimilarityRelax = False
Found = Doc.findFirst (SearchDesc)
 
Do While Found
  Found.CharWeight = com.sun.star.awt.FontWeight.BOLD
  Found = Doc.findNext( Found.End, Search)
Loop

Template:Documentation/Note

Come nella vecchia API di Apache OpenOffice, anche nella nuova API la ricerca e la sostituzione di testo vengono eseguite utilizzando l'oggetto documento. Mentre però in precedenza esisteva un oggetto denominato SearchSettings dedicato alla definizione delle opzioni di ricerca, le nuove ricerche di oggetti vengono ora eseguite utilizzando un oggetto SearchDescriptor o ReplaceDescriptor per la sostituzione automatica del testo. Questi oggetti coprono non solo le opzioni, ma anche il testo di ricerca corrente e, se necessario, la sostituzione di testo associata. Gli oggetti descrittori vengono creati utilizzando l'oggetto documento, completati in conformità ai requisiti pertinenti e quindi nuovamente trasferiti all'oggetto documento sotto forma di parametri per i metodi di ricerca.

Sostituzione di parti del testo

Proprio come la funzione di ricerca, la funzione di sostituzione di Apache OpenOffice è disponibile anche in Apache OpenOffice Basic. La gestione delle due funzioni è identica: anche per il processo di sostituzione è necessario per prima cosa un oggetto speciale che registri i parametri del processo. È denominato ReplaceDescriptor e supporta il servizio com.sun.star.util.ReplaceDescriptor. Tutte le proprietà del SearchDescriptor descritte nel paragrafo precedente sono supportate anche da ReplaceDescriptor.. Ad esempio, durante un processo di sostituzione, potete attivare e disattivare la distinzione tra maiuscole e minuscole ed eseguire ricerche per analogia.

L'esempio seguente dimostra l'uso di ReplaceDescriptors per una ricerca all'interno di un documento di Apache OpenOffice.

Dim I As Long
Dim Doc As Object
Dim Replace As Object
Dim BritishWords(5) As String
Dim USWords(5) As String
 
BritishWords() = Array("colour", "neighbour", "centre", "behaviour", _
   "metre", "through")
USWords() = Array("color", "neighbor", "center", "behavior", _
   "meter", "thru")
 
Doc = StarDesktop.CurrentComponent
Replace = Doc.createReplaceDescriptor
 
For O = 0 To 5
  Replace.SearchString = BritishWords(I)
  Replace.ReplaceString = USWords(I)
  Doc.replaceAll(Replace)
Next n

Le espressioni di ricerca e sostituzione vengono impostate utilizzando le proprietà SearchString e ReplaceString dei ReplaceDescriptors. Il processo effettivo di sostituzione è infine implementato utilizzando il metodo replaceAll dell'oggetto documento, che sostituisce tutte le ricorrenze dell'espressione di ricerca.

Esempio: ricerca e sostituzione del testo con le espressioni regolari

La funzione di sostituzione di Apache OpenOffice è particolarmente efficace quando utilizzata assieme alle espressioni regolari. Queste ultime vi consentiranno infatti di definire un'espressione di ricerca variabile con segnaposto e caratteri speciali al posto di un valore fisso.

Le espressioni regolari supportate da Apache OpenOffice sono descritte in dettaglio nella sezione della guida in linea di Apache OpenOffice. Di seguito vengono riportati alcuni esempi:

  • Un punto all'interno di un'espressione di ricerca rappresenta qualsiasi carattere. L'espressione di ricerca sh.rt può quindi rappresentare sia shirt che short.
  • Il carattere ^ contrassegna l'inizio di un paragrafo. Tutte le ricorrenze del nome Peter che si trovano all'inizio di un paragrafo possono pertanto essere reperite

utilizzando l'espressione di ricerca ^Peter.

  • Il carattere $ contrassegna la fine di un paragrafo. Tutte le ricorrenze del nome Peter che si trovano alla fine di un paragrafo possono pertanto essere reperite

utilizzando l'espressione di ricerca Peter$.

  • Un * indica che il carattere precedente può essere ripetuto a piacere e può essere combinato con il punto come segnaposto per qualsiasi carattere. L'espressione temper.*e, ad esempio, può rappresentare sia l'espressione temperance che temperature.

L'esempio seguente mostra come rimuovere tutte le righe vuote di un documento di testo con l'ausilio dell'espressione regolare ^$:

Dim Doc As Object
Dim Replace As Object
Dim I As Long
 
Doc = StarDesktop.CurrentComponent
Replace = Doc.createReplaceDescriptor
Replace.SearchRegularExpression = True
Replace.SearchString = "^$"
Replace.ReplaceString = ""
 
Doc.replaceAll(Replace)
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools