Top > OOobbs > 75
  • The added line is THIS COLOR.
  • The deleted line is THIS COLOR.
  • Go to OOobbs/75.

** [[OOobbs/75]] [#aebeffdf]
-''サマリ'': PageStyleのプロパティを取り出す
-''環境'': Writer
-''状態'': 未解決
-''投稿者'': [[catch]]
-''投稿日'': 2005-09-28 (水) 05:32:40

*** 質問 [#l21cd8d0]
お世話になってます。
原稿用紙テンプレートを設定するためのダイアログ-マクロを作ろうとしています。

とりあえずダイアログを表示して、そのラベルに文字を設定するというような非常に初歩的な雛形だけ作りました(お恥ずかしいかぎりです)。

さて、このラベルに、PageStyleオブジェクトのプロパティ(たとえばGridBaseHeight)を設定するにはどうすればいいでしょう?

非常に初歩的な質問で申し訳ありません。
よろしくお願いします。
*** 回答 [#we89122e]
-原稿用紙テンプレートマクロを私も作成しようとして,挙動を調べながらプロトタイプを作成したのですが,ちょっと忘れていました。ごめんなさい。

ところで,質問に関してですが

Writer ドキュメントのスタイルオブジェクトはスタイルファミリーコンテナオブジェクトから名前指定で取得します。新しくドキュメントを作成した場合に使われているスタイルは "標準" (英語版だと Default) です。この名前を指定してページスタイルオブジェクトを以下のように取得します。

(変数の定義部分は省略しています)

  oDoc = ThisComponent
  'oDoc = StarDesktop.ActiveFrame.Controller.Model
  oStyleFamilies = oDoc.getStyleFamilies()
  oPageStyles = oStyleFamilies.getByName("PageStyles")
  If oPageStyles.hasByName("標準") Then
    oPageStyle = oPageStyles.getByName("標準")
  End If

そして,ダイアログオブジェクトを作成します。ここでは,"Standard" ライブラリの Dialog1 というダイアログのダイアログオブジェクトを作成しています。

'-- Dialog Construction
  DialogLibraries.LoadLibrary("Standard")
  oDialog = createUnoDialog(DialogLibraries.Standard.Dialog1)

さて,ダイアログにあるラベル "Label1" に文字を設定するには,

 Dim oLabel1 As Object
   oLabel1 = oDialog.getControl("Label1")
   oLabel1.Text = oPageStyle.GridBaseHeight

とします。

ダイアログを表示するには次のようにします。

 oDialog.execute()

表示される GridBaseHeight は 1/100 mm の単位です。(OOo では普通,プロパティー値で長さの次元を持つものはこの 1/100 mm の単位です)




-- [[はにゃ?]] &new{2005-09-28 (水) 23:43:34};
-作成したプロトタイプをおいておきます。

&ref(manuscriptpaper_macro_001.odt);

-- [[はにゃ?]] &new{2005-09-28 (水) 23:55:01};
-お忙しいところ、ご教授頂きありがとうございます。 -- [[catch]] &new{2005-09-29 (木) 06:44:55};

おかげでプロパティをモニターできるようになりました。
モニター機能付き原稿用紙テンプレートを下記においておきます。

http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FMacros%2Fmanuscriptpaper%2Fdev

僭越ながら、toraさんの日経LinuxでのBasic講座によると、下記のコードは省略して、1行で記述できるんだそうです。
変数宣言が、ちょっと不要になりますネ。

  oDoc = ThisComponent
  oStyleFamilies = oDoc.getStyleFamilies()
  oPageStyles = oStyleFamilies.getByName("PageStyles")

  oDoc = ThisComponent.getStyleFamilies().getByName("PageStyles")
-そうですね、ページスタイル以外にアクセスしなければそのほうがいいかもしれません。その他のスタイルに頻繁にアクセスする必要がある場合には、上記のようにスタイルファミリーコンテナオブジェクトを変数として作成したほうがマクロの実行速度が速くなるそうです。 -- [[はにゃ?]] &new{2005-09-29 (木) 12:13:06};

#comment

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