Top > OOoBasic > Draw > drawpage
*DrawPage [#qca159a6]
Draw では Calc などのようにシートやセル,セル範囲といったものがなく,ドローページへのアクセスがほとんどです。

Draw ではさまざまな図形を描きますが,それらはシェープオブジェクトとしてドローページオブジェクトに属して存在します。そのため,Draw ドキュメントへのアクセスにはドローページへのアクセスが欠かせません。ドローページへのアクセスはドキュメントオブジェクトからドローページコンテナを通じて行います。

#contents

**ドローページコンテナ [#y44802af]
ドローページオブジェクトはドローページコンテナオブジェクトに一つにまとめられて管理されています。このドローページコンテナオブジェクトはドキュメントオブジェクトの ''DrawPages'' プロパティーを使用して取得します。また,メソッドを使用するときには ''getDrawPages'' メソッドを使用します。このメソッドには引数はありません。

ドローページコンテナオブジェクトを取得する簡単な例を見てみます。

 Sub drawpage_1
 Dim oDoc As Object
 Dim oDrawPages As Object
   oDoc = ThisComponent
   oDrawPages = oDoc.Drawpages
   
   'oDrawPages = oDoc.getDrawPages
 End Sub

ここでは oDrawPages 変数にドローページコンテナオブジェクトを取得しました。

**ドローページ [#s929d80c]
ドローページは上記のドローページコンテナから取得することになります。

取得する方法は二つです。
+ドローページの名前指定で取得
+ドローページのインデックスで取得

ドローページの名前で取得するときには,Draw のウィンドウの下側に表示されているページタブの名前を使用します。"Slid 1" といった名前です。

ドローページのインデックスで取得するときのインデックスは Draw ウィンドウの下側に並んでいるページタブの左から順に 0, 1, 2, ... の順になっています。インデックスの最初の番号は "0" から始まることに注意してください。

***ドローページの名前で取得 [#ue5ec0d6]
ドローページの名前で特定のドローページを取得するには,''getByName'' メソッドを使用します。このメソッドは取得したいページ名を引数にとります。

 Sub drawpage_2
 Dim oDoc As Object
 Dim oDrawPages As Object
 Dim oDrawPage As Object
   oDoc = ThisComponent
   oDrawPages = oDoc.getDrawPages()
   oDrawPage = oDrawPages.getByName("Slide 1")
 End Sub

また,取得したい名前のページがあるかどうかを調べるためのメソッドが ''hasByName'' メソッドです。このメソッドも存在するかどうか問い合わせるページ名を引数に指定します。


 Sub drawpage_3
 Dim oDoc As Object
 Dim oDrawPages As Object
 Dim oDrawPage As Object
 Dim sPageName As String
   sSlideName = "Slide 1"
   oDoc = ThisComponent
   oDrawPages = oDoc.getDrawPages()
   If oDrawPages.hasByName(sPageName) Then
     oDrawPage = oDrawPages.getByName(sPageName)
   End If
 End Sub

ドローページコンテナに含まれている全てのページ名を知りたいときには ''getElementNames'' メソッドを使用してページ名の配列として取得できます。

 Sub drawpage_4
 Dim oDoc As Object
 Dim oDrawPages As Object
 Dim aPageNames As String
 Dim sPageName As String
 Dim i As Integer
   sSlideName = "Slide 1"
   oDoc = ThisComponent
   oDrawPages = oDoc.getDrawPages()
   aPageNames = oDrawPages.getElementNames()
   For i = 0 To UBoud(aPageNames)
     MsgBox aPageNames(i)
   Next i
 End Sub




***ドローページのインデックスで取得 [#gaed2cbc]
特定のドローページオブジェクトをインデックスで取得するには ''getByIndex'' メソッドを使用します。ドローページコンテナオブジェクト内で管理されているドローページのインデックスは "0" から始まります。

 Sub drawpage_5
 Dim oDoc As Object
 Dim oDrawPages As Object
 Dim oDrawPage As Object
   oDoc = ThisComponent
   oDrawPages = oDoc.getDrawPages()
   oDrawpage = oDrawPages.getByIndex(0)
 End Sub

ここでは,インデックス "0" のドローページオブジェクトを取得しました。ドローページコンテナ内で,新しくページが作成されたりページが削除されると,インデックスは振りなおされます。そのため,インデックスが変更されるかもしれないことに注意しなければいけません。

ドローページコンテナにいくつのページが含まれているのかを調べるために ''getCount'' メソッドを使用します。

 Sub drawpage_6
 Dim oDoc As Object
 Dim oDrawPages As Object
 Dim oDrawPage As Object
   oDoc = ThisComponent
   oDrawPages = oDoc.getDrawPages()
   MsgBox oDrawPages.getCount()
 End Sub

**ドローページの取り扱い [#qf6188fe]
新規のドローページを追加したり,ドローページを削除するにはドローページコンテナオブジェクトに対して行います。

***ドローページの新規作成 [#h6db0401]
ドローページを新しく追加するにはドローページコンテナオブジェクトの ''insertNewByIndex'' メソッドを使用して追加するインデックスを指定して行います。メソッドの引数は Long 型の整数値で新しく追加するドローページのインデックスを指定します。このとき,すでに存在するインデックスが指定されたときには他のインデックスのページのインデックスが変更されます。

  Sub drawpage_7
  Dim oDoc As Object
  Dim oDrawPages As Object
    oDoc = ThisComponent
    oDrawPages = oDoc.getDrawPages()
    oDrawpages.insertNewByIndex(1)
  End Sub

最後のインデックスに新しいドローページを挿入したいときには ''getCount'' メソッドですでに存在するドローページ数を調べます。

  Sub drawpage_8
  Dim oDoc As Object
  Dim oDrawPages As Object
    oDoc = ThisComponent
    oDrawPages = oDoc.getDrawPages()
    MsgBox oDrawPages.getCount()
  End Sub

***ドローページの削除 [#aaadb63e]
ドローページの削除にはドローページコンテナオブジェクトの ''remove'' メソッドを使用します。ここで,このメソッドには削除するドローページオブジェクトを引数として指定しなければいけません。そのため,ドローページを上記に従って取得しておきます。

  Sub drawpage_9
  Dim oDoc As Object
  Dim oDrawPages As Object
  Dim oDrawPage As Object
    oDoc = ThisComponent
    oDrawPages = oDoc.getDrawPages()
    oDrawPages.insertNewByIndex(1)
    oDrawPage = oDrawPages.getByIndex(1)
    oDrawPages.remove(oDrawPage)
  End Sub
**現在のページ [#y4e48fff]
現在表示中のスライドは CurrentController から取得します。

 oController = ThisComponent.getCurrentController()
 oPage = oController.CurrentPage

** ページの複製 [#ca5382ee]
ページをまるごと複製します。

 Sub DuplicateDrawPage1
  doc = ThisComponent
  pages = doc.getDrawPages()
  
  newpage = doc.duplicate(pages.getByIndex(0))
 End Sub

複製されたページは元のページの次に挿入されます。

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes