Difference between revisions of "JA/Documentation/BASIC Guide/Interface Overview"

From Apache OpenOffice Wiki
Jump to: navigation, search
(New page: {{DISPLAYTITLE: 中央インターフェースの概要}} {{JA/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Doc...)
 
 
(3 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
|ShowPrevNext=block
 
|ShowPrevNext=block
 
|ShowPrevPage=block
 
|ShowPrevPage=block
|PrevPage=Documentation/BASIC Guide/UNO Tools
+
|PrevPage=JA/Documentation/BASIC Guide/UNO Tools
|NextPage=Documentation/BASIC Guide/Documents
+
|NextPage=JA/Documentation/BASIC Guide/Documents
 
|api=block
 
|api=block
 
}}
 
}}
 
   
 
   
{{OOo}} のインターフェースの中には、{{OOo}} API の各所で使用されるものが存在します。これらは、各種の処理に利用可\'94\'5cな抽象的タスクを実行する一連のメ\'83\'5cッドを規定しています。ここではこのようなインターフェースのうち、使用頻度の高いものについて、その概要を説明します。
+
{{OOo}} のインターフェースの中には、{{OOo}} API の各所で使用されるものが存在します。これらは、各種の処理に利用可能な抽象的タスクを実行する一連のメソッドを規定しています。ここではこのようなインターフェースのうち、使用頻度の高いものについて、その概要を説明します。
  
オブジェクトの出所については、この\'83\'7dニュアルの後半で説明します。ここでは単に、{{OOo}} API が主要なインターフェースを提供するオブジェクトについて、その抽象的な機\'94\'5cのいくつかを簡単に説明するにとどめておきます。
+
オブジェクトの出所については、このマニュアルの後半で説明します。ここでは単に、{{OOo}} API が主要なインターフェースを提供するオブジェクトについて、その抽象的な機能のいくつかを簡単に説明するにとどめておきます。
  
 
== コンテキスト依存型オブジェクトの作成 ==
 
== コンテキスト依存型オブジェクトの作成 ==
  
{{OOo}} API でオブジェクトを作成するには、2 通りの方法が存在します。その 1 つは、この章の初めに説明した <tt>createUnoService 関数を使用する方法です。</tt><tt>createUnoService</tt> 関数は、広域的に使用可\'94\'5cなオブジェクトを作成します。このようなオブジェクトやサービスは、コンテキスト非依存型サービスとも呼びます。
+
{{OOo}} API でオブジェクトを作成するには、2 通りの方法が存在します。その 1 つは、この章の初めに説明した <tt>createUnoService</tt> 関数を使用する方法です。<tt>createUnoService</tt> 関数は、広域的に使用可能なオブジェクトを作成します。このようなオブジェクトやサービスは、コンテキスト非依存型サービスとも呼びます。
  
このようなコンテキスト非依存型サービスに対するものとして、コンテキスト依存型サービス も存在し、この場合のオブジェクトは他のオブジェクトと併用することでのみ使用できます。たとえば、ある\'95\'5c計算ドキュメントに配置された\'90\'7d形描画オブジェクトは、このドキュメントと共存することにより存在できます。
+
このようなコンテキスト非依存型サービスに対するものとして、コンテキスト依存型サービス も存在し、この場合のオブジェクトは他のオブジェクトと併用することでのみ使用できます。たとえば、ある表計算ドキュメントに配置された図形描画オブジェクトは、このドキュメントと共存することにより存在できます。
  
 
=== <tt>com.sun.star.lang.XMultiServiceFactory</tt> インターフェース ===
 
=== <tt>com.sun.star.lang.XMultiServiceFactory</tt> インターフェース ===
  
通常、コンテキスト依存型のオブジェクトを作成するには、そのオブジェクトの依存相手のオブジェクトメ\'83\'5cッドを使用します。<tt>createInstance</tt> メ\'83\'5cッドは、<tt>XMultiServiceFactory インターフェースで規定されているもので、主としてドキュメントオブジェクトに対して使用します。</tt>
+
通常、コンテキスト依存型のオブジェクトを作成するには、そのオブジェクトの依存相手のオブジェクトメソッドを使用します。<tt>createInstance</tt> メソッドは、<tt>XMultiServiceFactory</tt> インターフェースで規定されているもので、主としてドキュメントオブジェクトに対して使用します。
  
たとえば、先に説明した図形描画オブジェクトを作成するには、以下のサンプルコードのように、オブジェクトとして表計算ドキュメントを使用します。
+
たとえば、先に説明した図形描画オブジェクトを作成するには、次のサンプルコードのように、オブジェクトとして表計算ドキュメントを使用します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 32: Line 32:
 
</source>
 
</source>
  
同様に、文書ドキュメントの段落テンプレートは、以下のサンプルコードのようにして作成します。
+
同様に、文書ドキュメントの段落テンプレートは、次のサンプルコードのようにして作成します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 47: Line 47:
 
=== <tt>com.sun.star.container.XNameAccess</tt> インターフェース ===
 
=== <tt>com.sun.star.container.XNameAccess</tt> インターフェース ===
  
ここでは <tt>XNameAccess</tt> の使用例として、表計算ドキュメントの表 (シート) オブジェクトを扱う場合を取り上げます。このオブジェクトは\'95\'5c計算ドキュメント内のすべてのページをまとめたものとして扱われます。そのため各ページへのアクセスには、<tt>getByName</tt> の <tt>XNameAccess</tt> メソッドを使用します。
+
ここでは <tt>XNameAccess</tt> の使用例として、表計算ドキュメントの表 (シート) オブジェクトを扱う場合を取り上げます。このオブジェクトは表計算ドキュメント内のすべてのページをまとめたものとして扱われます。そのため各ページへのアクセスには、<tt>XNameAccess</tt> の <tt>getByName</tt> メソッドを使用します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 57: Line 57:
 
</source>
 
</source>
  
すべての要素の名前を取得するには、<tt>getElementNames</tt> メソッドを使用します。これを実行すると、該当する名前を収めたデータフィールド (配列) が返されます。以下のサンプルコードは、ループを使用して\'95\'5c計算ドキュメント内のすべての要素名を取得し、\'95\'5c示します。
+
すべての要素の名前を取得するには、<tt>getElementNames</tt> メソッドを使用します。これを実行すると、該当する名前を収めたデータフィールド (配列) が返されます。次のサンプルコードは、ループを使用して表計算ドキュメント内のすべての要素名を取得し、表示します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 72: Line 72:
 
</source>
 
</source>
  
基本オブジェクト内に該当する名前の下位オブジェクトが存在するかを確認するには、<tt>hasByName</tt> インターフェースの <tt>XNameAccess</tt> メソッドを使用します。以下のサンプルコードは、<tt>Spreadsheet</tt> オブジェクトに <tt>Sheet1</tt> という名前のページがあるかを確認して、その結果をメッセージボックスに表示します。
+
基本オブジェクト内に該当する名前の下位オブジェクトが存在するかを確認するには、<tt>XNameAccess</tt> インターフェースの <tt>hasByName</tt> メソッドを使用します。次のサンプルコードは、<tt>Spreadsheet</tt> オブジェクトに <tt>Sheet1</tt> という名前のページがあるかを確認して、その結果をメッセージボックスに表示します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 89: Line 89:
 
基本オブジェクトの下位にある要素に対する挿入、削除、変更を行うには、<tt>XNameContainer</tt> インターフェースを使用します。ここでは、<tt>insertByName</tt>、<tt>removeByName</tt>、<tt>replaceByName</tt> の各メソッドを使用できます。
 
基本オブジェクトの下位にある要素に対する挿入、削除、変更を行うには、<tt>XNameContainer</tt> インターフェースを使用します。ここでは、<tt>insertByName</tt>、<tt>removeByName</tt>、<tt>replaceByName</tt> の各メソッドを使用できます。
  
これらは通常、以下のサンプルコードのように使用します。この場合は、文書ドキュメントの <tt>StyleFamilies</tt> オブジェクトを使用して、ドキュメントの段落テンプレート (ParagraphStyles) に対する操作を行なっています。
+
これらは通常、次のサンプルコードのように使用します。この場合は、文書ドキュメントの <tt>StyleFamilies</tt> オブジェクトを使用して、ドキュメントの段落テンプレート (ParagraphStyles) に対する操作を行なっています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 109: Line 109:
 
下位オブジェクトを持つオブジェクトでインデックスによるアクセスが可能なものに対しては、<tt>XIndexAccess</tt> および <tt>XIndexContainer</tt> インターフェースを使用します。
 
下位オブジェクトを持つオブジェクトでインデックスによるアクセスが可能なものに対しては、<tt>XIndexAccess</tt> および <tt>XIndexContainer</tt> インターフェースを使用します。
  
<tt>XIndexAccess</tt> には、個々のオブジェクトへアクセスするためのメ\'83\'5cッドが用意されています。<tt>XIndexContainer</tt> には、要素を\'91\'7d入したり削除するためのメ\'83\'5cッドが用意されています。
+
<tt>XIndexAccess</tt> には、個々のオブジェクトへアクセスするためのメソッドが用意されています。<tt>XIndexContainer</tt> には、要素を挿入したり削除するためのメソッドが用意されています。
  
 
=== <tt>com.sun.star.container.XIndexAccess</tt> インターフェース ===
 
=== <tt>com.sun.star.container.XIndexAccess</tt> インターフェース ===
  
<tt>XIndexAccess</tt><tt> を用いて下位オブジェクトへアクセスするには、getByIndex</tt> および <tt>getCount</tt> メ\'83\'5cッドを使用します。<tt>getByIndex</tt>このうち  は、指定したインデックスに該当するオブジェクトを返します。<tt>getCount</tt>同様に  は、使用可\'94\'5cなオブジェクト数を返します。
+
<tt>XIndexAccess</tt> を用いて下位オブジェクトへアクセスするには、<tt>getByIndex</tt> および <tt>getCount</tt> メソッドを使用します。このうち <tt>getByIndex</tt> は、指定したインデックスに該当するオブジェクトを返します。同様に <tt>getCount</tt> は、使用可能なオブジェクト数を返します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 128: Line 128:
 
</source>
 
</source>
  
このサンプルコードでは、ループを使用して個々の表 (シート) 要素にアクセスし、各要素をオブジェクト変数 <tt>Sheet</tt> に取得しています。<tt>getCount は正味の要素数を返すため、インデックスによるアクセスを行う場合、その扱いには注意が必要です。</tt>これは、<tt>getByIndex に指定するインデックスは、0 から始まるものとして処理されるためです。</tt>このため、ループカウンタの指定は 0 から <tt>getCount()-1</tt> などのように記述する必要があります。
+
このサンプルコードでは、ループを使用して個々の表 (シート) 要素にアクセスし、各要素をオブジェクト変数 <tt>Sheet</tt> に取得しています。<tt>getCount</tt> は正味の要素数を返すため、インデックスによるアクセスを行う場合、その扱いには注意が必要です。これは、<tt>getByIndex</tt> に指定するインデックスは、0 から始まるものとして処理されるためです。このため、ループカウンタの指定は 0 から <tt>getCount()-1</tt> などのように記述する必要があります。
  
 
=== <tt>com.sun.star.container.XIndexContainer</tt> インターフェース ===
 
=== <tt>com.sun.star.container.XIndexContainer</tt> インターフェース ===
  
<tt>XIndexContainer</tt> インターフェースにより、関数 <tt>insertByIndex</tt> および <tt>removeByIndex</tt> が使用できます。これらに指定するパラメータは、<tt>XNameContainer の該当するメソッドと同様の構成になっています。</tt>
+
<tt>XIndexContainer</tt> インターフェースにより、関数 <tt>insertByIndex</tt> および <tt>removeByIndex</tt> が使用できます。これらに指定するパラメータは、<tt>XNameContainer</tt> の該当するメソッドと同様の構成になっています。
  
 
== 下位オブジェクトへの反復アクセス ==
 
== 下位オブジェクトへの反復アクセス ==
  
インスタンスによっては、名前やインデックスではアクセスできない下位オブジェクトを持つオブジェクトが存在します。このような場合は、<tt>XEnumeration</tt> および <tt>XenumerationAccess インターフェースを使用します。</tt>これらを用いると、直接アドレスを指定することなく、各オブジェクトに存在するすべての下位要素にアクセスできます。
+
インスタンスによっては、名前やインデックスではアクセスできない下位オブジェクトを持つオブジェクトが存在します。このような場合は、<tt>XEnumeration</tt> および <tt>XenumerationAccess</tt> インターフェースを使用します。これらを用いると、直接アドレスを指定することなく、各オブジェクトに存在するすべての下位要素にアクセスできます。
  
 
=== <tt>com.sun.star.container.XEnumeration</tt> および <tt>XenumerationAccess</tt> インターフェース ===
 
=== <tt>com.sun.star.container.XEnumeration</tt> および <tt>XenumerationAccess</tt> インターフェース ===
  
基\'96\'7bオブジェクトには <tt>XEnumerationAccess</tt> インターフェースが用意されていますが、このインターフェースからは <tt>createEnumeration</tt> メ\'83\'5cッドのみが使用できます。これを使用して得られる補助オブジェクトには、<tt>XEnumeration</tt> と <tt>hasMoreElements</tt> メ\'83\'5cッドを持つ <tt>nextElement インターフェースが用意されています。</tt>下位オブジェクトのアクセスには、これらのメ\'83\'5cッドを使用します。
+
基本オブジェクトには <tt>XEnumerationAccess</tt> インターフェースが用意されていますが、このインターフェースからは <tt>createEnumeration</tt> メソッドのみが使用できます。これを使用して得られる補助オブジェクトには、<tt>hasMoreElements</tt> と <tt>nextElement</tt> メソッドを持つ <tt>XEnumeration</tt> インターフェースが用意されています。下位オブジェクトのアクセスには、これらのメソッドを使用します。
  
以下のサンプルコードは、文書ドキュメント上のすべての段落にアクセスします。
+
次のサンプルコードは、文書ドキュメント上のすべての段落にアクセスします。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 155: Line 155:
 
</source>
 
</source>
  
上記のサンプルコードでは、最初に <tt>ParagraphEnumeration</tt> という名前で補助オブジェクトを作成しています。そしてループに入り、この補助オブジェクトを用いて、文章中の各段落に順次アクセスします。テキストの末尾に到達すると <tt>hasMoreElements</tt> メ\'83\'5cッドは <tt>False 値を返すため、これをループの終了条件に利用します。</tt>
+
上記のサンプルコードでは、最初に <tt>ParagraphEnumeration</tt> という名前で補助オブジェクトを作成しています。そしてループに入り、この補助オブジェクトを用いて、文章中の各段落に順次アクセスします。テキストの末尾に到達すると <tt>hasMoreElements</tt> メソッドは <tt>False</tt> 値を返すため、これをループの終了条件に利用します。
 +
 
  
 
{{PDL1}}
 
{{PDL1}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Interface Overview}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Interface Overview}}

Latest revision as of 16:47, 15 December 2008

doc OOo
Book.png

Apache OpenOffice のインターフェースの中には、Apache OpenOffice API の各所で使用されるものが存在します。これらは、各種の処理に利用可能な抽象的タスクを実行する一連のメソッドを規定しています。ここではこのようなインターフェースのうち、使用頻度の高いものについて、その概要を説明します。

オブジェクトの出所については、このマニュアルの後半で説明します。ここでは単に、Apache OpenOffice API が主要なインターフェースを提供するオブジェクトについて、その抽象的な機能のいくつかを簡単に説明するにとどめておきます。

コンテキスト依存型オブジェクトの作成

Apache OpenOffice API でオブジェクトを作成するには、2 通りの方法が存在します。その 1 つは、この章の初めに説明した createUnoService 関数を使用する方法です。createUnoService 関数は、広域的に使用可能なオブジェクトを作成します。このようなオブジェクトやサービスは、コンテキスト非依存型サービスとも呼びます。

このようなコンテキスト非依存型サービスに対するものとして、コンテキスト依存型サービス も存在し、この場合のオブジェクトは他のオブジェクトと併用することでのみ使用できます。たとえば、ある表計算ドキュメントに配置された図形描画オブジェクトは、このドキュメントと共存することにより存在できます。

com.sun.star.lang.XMultiServiceFactory インターフェース

通常、コンテキスト依存型のオブジェクトを作成するには、そのオブジェクトの依存相手のオブジェクトメソッドを使用します。createInstance メソッドは、XMultiServiceFactory インターフェースで規定されているもので、主としてドキュメントオブジェクトに対して使用します。

たとえば、先に説明した図形描画オブジェクトを作成するには、次のサンプルコードのように、オブジェクトとして表計算ドキュメントを使用します。

Dim RectangleShape As Object
RectangleShape = _
  Spreadsheet.createInstance("com.sun.star.drawing.RectangleShape")

同様に、文書ドキュメントの段落テンプレートは、次のサンプルコードのようにして作成します。

Dim Style as Object
Style = Textdocument.createInstance("com.sun.star.style.ParagraphStyle")

下位オブジェクトへの名前付きアクセス

下位オブジェクトを持つオブジェクトで自然言語名によるアクセスが可能なものに対しては、XNameAccess および XNameContainer インターフェースを使用します。

このうち XNamedAccess は個々のオブジェクトに対してアクセスを行い、XNameContainer は各要素の挿入、変更、削除を行います。

com.sun.star.container.XNameAccess インターフェース

ここでは XNameAccess の使用例として、表計算ドキュメントの表 (シート) オブジェクトを扱う場合を取り上げます。このオブジェクトは表計算ドキュメント内のすべてのページをまとめたものとして扱われます。そのため各ページへのアクセスには、XNameAccessgetByName メソッドを使用します。

Dim Sheets As Object
Dim Sheet As Object
 
Sheets = Spreadsheet.Sheets
Sheet = Sheets.getByName("Sheet1")

すべての要素の名前を取得するには、getElementNames メソッドを使用します。これを実行すると、該当する名前を収めたデータフィールド (配列) が返されます。次のサンプルコードは、ループを使用して表計算ドキュメント内のすべての要素名を取得し、表示します。

Dim Sheets As Object
Dim SheetNames
Dim I As Integer
 
Sheets = Spreadsheet.Sheets
SheetNames = Sheets.getElementNames
 
For I=LBound(SheetNames) To UBound(SheetNames)
  MsgBox SheetNames(I)
Next I

基本オブジェクト内に該当する名前の下位オブジェクトが存在するかを確認するには、XNameAccess インターフェースの hasByName メソッドを使用します。次のサンプルコードは、Spreadsheet オブジェクトに Sheet1 という名前のページがあるかを確認して、その結果をメッセージボックスに表示します。

Dim Sheets As Object
 
Sheets = Spreadsheet.Sheets
If Sheets.HasByName("Sheet1") Then
  MsgBox " Sheet1 available"
Else
  MsgBox "Sheet1 not available"
End If

com.sun.star.container.XNameContainer インターフェース

基本オブジェクトの下位にある要素に対する挿入、削除、変更を行うには、XNameContainer インターフェースを使用します。ここでは、insertByNameremoveByNamereplaceByName の各メソッドを使用できます。

これらは通常、次のサンプルコードのように使用します。この場合は、文書ドキュメントの StyleFamilies オブジェクトを使用して、ドキュメントの段落テンプレート (ParagraphStyles) に対する操作を行なっています。

Dim StyleFamilies As Object
Dim ParagraphStyles As Object
Dim NewStyle As Object   
 
StyleFamilies = Textdoc.StyleFamilies
ParagraphStyles = StyleFamilies.getByName("ParagraphStyles")
ParagraphStyles.insertByName("NewStyle", NewStyle)      
ParagraphStyles.replaceByName("ChangingStyle", NewStyle)   
ParagraphStyles.removeByName("OldStyle")

ここで insertByName の行は、NewStyle というスタイルを ParagraphStyles オブジェクトと同じ名前で挿入しています。その次の replaceByName の行は、ChangingStyle で指定するオブジェクトを、NewStyle に変更しています。最後に、removeByName の行は、OldStyle で指定するオブジェクトを、ParagraphStyles から削除しています。

インデックス方式による下位オブジェクトへのアクセス

下位オブジェクトを持つオブジェクトでインデックスによるアクセスが可能なものに対しては、XIndexAccess および XIndexContainer インターフェースを使用します。

XIndexAccess には、個々のオブジェクトへアクセスするためのメソッドが用意されています。XIndexContainer には、要素を挿入したり削除するためのメソッドが用意されています。

com.sun.star.container.XIndexAccess インターフェース

XIndexAccess を用いて下位オブジェクトへアクセスするには、getByIndex および getCount メソッドを使用します。このうち getByIndex は、指定したインデックスに該当するオブジェクトを返します。同様に getCount は、使用可能なオブジェクト数を返します。

Dim Sheets As Object
Dim Sheet As Object
Dim I As Integer
 
Sheets = Spreadsheet.Sheets
 
For I = 0 to Sheets.getCount() - 1
  Sheet = Sheets.getByIndex(I)
  ' Editing sheet
Next I

このサンプルコードでは、ループを使用して個々の表 (シート) 要素にアクセスし、各要素をオブジェクト変数 Sheet に取得しています。getCount は正味の要素数を返すため、インデックスによるアクセスを行う場合、その扱いには注意が必要です。これは、getByIndex に指定するインデックスは、0 から始まるものとして処理されるためです。このため、ループカウンタの指定は 0 から getCount()-1 などのように記述する必要があります。

com.sun.star.container.XIndexContainer インターフェース

XIndexContainer インターフェースにより、関数 insertByIndex および removeByIndex が使用できます。これらに指定するパラメータは、XNameContainer の該当するメソッドと同様の構成になっています。

下位オブジェクトへの反復アクセス

インスタンスによっては、名前やインデックスではアクセスできない下位オブジェクトを持つオブジェクトが存在します。このような場合は、XEnumeration および XenumerationAccess インターフェースを使用します。これらを用いると、直接アドレスを指定することなく、各オブジェクトに存在するすべての下位要素にアクセスできます。

com.sun.star.container.XEnumeration および XenumerationAccess インターフェース

基本オブジェクトには XEnumerationAccess インターフェースが用意されていますが、このインターフェースからは createEnumeration メソッドのみが使用できます。これを使用して得られる補助オブジェクトには、hasMoreElementsnextElement メソッドを持つ XEnumeration インターフェースが用意されています。下位オブジェクトのアクセスには、これらのメソッドを使用します。

次のサンプルコードは、文書ドキュメント上のすべての段落にアクセスします。

Dim ParagraphEnumeration As Object
Dim Paragraph As Object
 
ParagraphEnumeration = Textdoc.Text.createEnumeration
 
While ParagraphEnumeration.hasMoreElements()
  Paragraph = ParagraphEnumeration.nextElement()
Wend

上記のサンプルコードでは、最初に ParagraphEnumeration という名前で補助オブジェクトを作成しています。そしてループに入り、この補助オブジェクトを用いて、文章中の各段落に順次アクセスします。テキストの末尾に到達すると hasMoreElements メソッドは False 値を返すため、これをループの終了条件に利用します。


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