Top > OOoBasic > Draw > drawpage

DrawPage Edit

Draw では Calc などのようにシートやセル,セル範囲といったものがなく,ドローページへのアクセスがほとんどです。

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

ドローページコンテナ Edit

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

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

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

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

ドローページ Edit

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

取得する方法は二つです。

  1. ドローページの名前指定で取得
  2. ドローページのインデックスで取得

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

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

ドローページの名前で取得 Edit

ドローページの名前で特定のドローページを取得するには,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

ドローページのインデックスで取得 Edit

特定のドローページオブジェクトをインデックスで取得するには 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

ドローページの取り扱い Edit

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

ドローページの新規作成 Edit

ドローページを新しく追加するにはドローページコンテナオブジェクトの 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

ドローページの削除 Edit

ドローページの削除にはドローページコンテナオブジェクトの 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

現在のページ Edit

現在表示中のスライドは CurrentController から取得します。

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

ページの複製 Edit

ページをまるごと複製します。

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