Difference between revisions of "JA/Documentation/BASIC Guide/Interface Overview"
(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 | + | {{OOo}} のインターフェースの中には、{{OOo}} API の各所で使用されるものが存在します。これらは、各種の処理に利用可能な抽象的タスクを実行する一連のメソッドを規定しています。ここではこのようなインターフェースのうち、使用頻度の高いものについて、その概要を説明します。 |
− | + | オブジェクトの出所については、このマニュアルの後半で説明します。ここでは単に、{{OOo}} API が主要なインターフェースを提供するオブジェクトについて、その抽象的な機能のいくつかを簡単に説明するにとどめておきます。 | |
== コンテキスト依存型オブジェクトの作成 == | == コンテキスト依存型オブジェクトの作成 == | ||
− | {{OOo}} API でオブジェクトを作成するには、2 通りの方法が存在します。その 1 つは、この章の初めに説明した <tt>createUnoService | + | {{OOo}} API でオブジェクトを作成するには、2 通りの方法が存在します。その 1 つは、この章の初めに説明した <tt>createUnoService</tt> 関数を使用する方法です。<tt>createUnoService</tt> 関数は、広域的に使用可能なオブジェクトを作成します。このようなオブジェクトやサービスは、コンテキスト非依存型サービスとも呼びます。 |
− | このようなコンテキスト非依存型サービスに対するものとして、コンテキスト依存型サービス | + | このようなコンテキスト非依存型サービスに対するものとして、コンテキスト依存型サービス も存在し、この場合のオブジェクトは他のオブジェクトと併用することでのみ使用できます。たとえば、ある表計算ドキュメントに配置された図形描画オブジェクトは、このドキュメントと共存することにより存在できます。 |
=== <tt>com.sun.star.lang.XMultiServiceFactory</tt> インターフェース === | === <tt>com.sun.star.lang.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> の使用例として、表計算ドキュメントの表 (シート) | + | ここでは <tt>XNameAccess</tt> の使用例として、表計算ドキュメントの表 (シート) オブジェクトを扱う場合を取り上げます。このオブジェクトは表計算ドキュメント内のすべてのページをまとめたものとして扱われます。そのため各ページへのアクセスには、<tt>XNameAccess</tt> の <tt>getByName</tt> メソッドを使用します。 |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 57: | Line 57: | ||
</source> | </source> | ||
− | すべての要素の名前を取得するには、<tt>getElementNames</tt> メソッドを使用します。これを実行すると、該当する名前を収めたデータフィールド (配列) | + | すべての要素の名前を取得するには、<tt>getElementNames</tt> メソッドを使用します。これを実行すると、該当する名前を収めたデータフィールド (配列) が返されます。次のサンプルコードは、ループを使用して表計算ドキュメント内のすべての要素名を取得し、表示します。 |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 72: | Line 72: | ||
</source> | </source> | ||
− | 基本オブジェクト内に該当する名前の下位オブジェクトが存在するかを確認するには、<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) に対する操作を行なっています。 | |
<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> | + | <tt>XIndexAccess</tt> には、個々のオブジェクトへアクセスするためのメソッドが用意されています。<tt>XIndexContainer</tt> には、要素を挿入したり削除するためのメソッドが用意されています。 |
=== <tt>com.sun.star.container.XIndexAccess</tt> インターフェース === | === <tt>com.sun.star.container.XIndexAccess</tt> インターフェース === | ||
− | <tt>XIndexAccess</tt><tt> | + | <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>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>XIndexContainer</tt> インターフェースにより、関数 <tt>insertByIndex</tt> および <tt>removeByIndex</tt> が使用できます。これらに指定するパラメータは、<tt>XNameContainer</tt> の該当するメソッドと同様の構成になっています。 |
== 下位オブジェクトへの反復アクセス == | == 下位オブジェクトへの反復アクセス == | ||
− | インスタンスによっては、名前やインデックスではアクセスできない下位オブジェクトを持つオブジェクトが存在します。このような場合は、<tt>XEnumeration</tt> および <tt>XenumerationAccess | + | インスタンスによっては、名前やインデックスではアクセスできない下位オブジェクトを持つオブジェクトが存在します。このような場合は、<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> インターフェース === | ||
− | + | 基本オブジェクトには <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> | + | 上記のサンプルコードでは、最初に <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
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 の使用例として、表計算ドキュメントの表 (シート) オブジェクトを扱う場合を取り上げます。このオブジェクトは表計算ドキュメント内のすべてのページをまとめたものとして扱われます。そのため各ページへのアクセスには、XNameAccess の getByName メソッドを使用します。
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 インターフェースを使用します。ここでは、insertByName、removeByName、replaceByName の各メソッドを使用できます。
これらは通常、次のサンプルコードのように使用します。この場合は、文書ドキュメントの 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 メソッドのみが使用できます。これを使用して得られる補助オブジェクトには、hasMoreElements と nextElement メソッドを持つ 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). |