OOobbs2/119
質問
シートに追加したフォームの座標の取得と移動を実現するにはどうしたらいいのでしょうか? createInstance で作ったフォームのインスタンスをグローバルで保持しておき、そのインスタンスの Position プロパティを参照したところ、数千単位のとんでもなく大きな数字が入っていて、このプロパティを書き換えても動かすことはできませんでした。 よろしければアドバイスお願いします。 回答
aPoint.X = 2000 aPoint.Y = 500 oControlShape.setPosition( aPoint ) 一般的に OpenOffice.org のオブジェクトなどの位置やサイズが mm 単位で指定されている場合、1/100 mm 単位で指定します。たとえば、上記では 20 mm、5 mm に相当します。 コントロールシェープはグローバル変数に保持しなくてもフォームコントロールモデルからシェープを特定することができます。
下記の FindShape を使ってフォームコントロールからそのコントロールの XControlModel が所属するシェープを探します。 Sub Main oDoc = ThisComponent oDrawPage = oDoc.getDrawPage() oForm = oDrawPage.getForms().getByIndex(0) oControl = oForm.getByIndex(0) oShape = FindShape( oDrawPage, oControl ) If NOT IsNull( oShape ) Then msgbox oShape.ShapeType End If End Sub Function FindShape( oShapes As Object, oControl As Object ) As Object Dim oFound As Object For i = 0 To oShapes.getCount() Step 1 oShape = oShapes.getByIndex(i) If EqualUnoObjects( oShape.Control, oControl ) Then oFound = oShape Exit For End If Next FindShape = oShape End Function
感想,コメント,メモ
|