Top > OOobbs3 > 20

** [[OOobbs3/20]] [#y9034abc]
-''サマリ'':  com.sun.star.beans.PropertyValue にて指定できるNameとValueの調べ方
-''環境'': Basic
-''状態'': 未解決
-''状態'': 解決
-''投稿者'': [[new_OOo3]]
-''投稿日'': 2010-09-12 (日) 00:23:25

*** 質問 [#n8f455fb]
お世話になります。
標記につきまして、「 com.sun.star.beans.PropertyValue」にて指定できるNameと値の調べ方をご教示下さい。

具体的には下記Code1では
1)新規Writer Documentを開く
2)任意の文字列(oString)を入力
3)「com.sun.star.frame.DispatchHelper」serviceにて文末から2行上にCursorを移動
の動作が実行されます。
 ******* code1 *********
 Sub main
	Dim oDoc
	Dim dispatcher as object
	Dim Dummy()
		oDoc = StarDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, Dummy())
		oDocument = oDoc.CurrentController.Frame
			oString = "ここはParagraph1 " & Chr$(13) & _
						"ここはParagraph2 " & Chr$(13) &_
						"ここはParagraph3 " & Chr$(13) &_
						"ここはParagraph4 "
		oText = oDoc.getText()
		oText.insertString(oText.getEnd(), oString, false)
		oCur = oText.createTextCursor
   ' 
		dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	Dim args1(1) as new com.sun.star.beans.PropertyValue
		args1(0).Name = "Count"
		args1(0).Value = 2
		args1(1).Name = "Select"
		args1(1).Value = false
	dispatcher.executeDispatch(oDocument, ".uno:GoUp", "", 0, args1())
 End Sub
 ***********************************

同じ様にCode2にて「com.sun.star.frame.DispatchHelper」Serviceを用いてアラビア数字でのOutlineを設定したいと考えていますが、

Arg(0).Name

Arg(0).Value

Arg(1).Name

Arg(1).Value

のName値とValue値が分かりません。
******* code2 ********* [#i1799ef7]
 Sub main
	Dim oDoc
	Dim dispatcher as object
	Dim Dummy()
		oDoc = StarDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, Dummy())
		oDocument = oDoc.CurrentController.Frame
                dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	Dim args1(1) as new com.sun.star.beans.PropertyValue
		args1(0).Name = ???
		args1(0).Value = ???
		args1(1).Name = ???
		args1(1).Value = ???
	dispatcher.executeDispatch(oDocument, ".uno:SendOutlineToStarImpress", "", 0, args1())
			oString = "ここはParagraph1 " & Chr$(13) & _
						"ここはParagraph2 " & Chr$(13) &_
						"ここはParagraph3 " & Chr$(13) &_
						"ここはParagraph4 "
		oText = oDoc.getText()
		oText.insertString(oText.getEnd(), oString, false)
 End Sub
 ***********************************

Code2と同様にdispatch commandは不確かながらも見当とつけても「Arg1」のName値とValue値が分からず、時間ばかり浪費しております。
つきましては、dispatch Commandに対応する「com.sun.star.beans.PropertyValue」のArg1のName値とValue値の調べ方をご教示頂けます様お願いします。
*** 回答 [#df6af466]
- 簡単に言うと、ソースコードを見る、必要があります。Code 1 の GoUp で例示します。

ソースコードのディレクトリ構成とファイルの種類などについては詳しく書きませんが、どこか他のところで情報を見つけて下さい。

今回はオンラインでコード内を検索するために OOo の opengrok を利用します。
- http://svn.services.openoffice.org/opengrok/

GoUp で sw 以下を検索すると swriter.sdi で見つかります (他にも検索にヒットしますが)。sdi ファイルは uno コマンドとそれについての情報が記載されています。

該当する行は以下のようになっています。

 SfxBoolItem GoUp FN_LINE_UP
 (SfxInt16Item Count FN_PARAM_MOVE_COUNT,SfxBoolItem Select FN_PARAM_MOVE_SELECTION)
 [
 ... (略
 ]

最初の行にはコマンド名などが書かれています。詳細は知りません。

二行目が、このコマンドで指定できるオプションになります。この場合、要素数は 2 です。
- Count: 型 SfxInt16Item (C++: sal_Int16, uno: short, Basic: Integer)
- Select: 型 SfxBoolItem (boolean)

上記の code1 と比較してみて下さい。

ついでに SendOutlineToStarImpress についても書いておきます。調べると、二行目の値が空です。これは、要するに、引数を指定できないということです。

全てのコマンドで引数を指定できるとは限らないので悪しからず…。

-- はにゃ? &new{2010-09-12 (日) 01:33:13};
- ご教示ありがとうございます。これまでは引数を指定出来るかさえ分からない中、一向に検索を繰り返しておりました。ご教示いただけた事で五里霧中から抜け出せた様に思います。本当にありがとうございました。 -- new_OOo3 &new{2010-09-12 (日) 18:56:39};

#comment
*** 感想,コメント,メモ [#e694ebd8]

#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