「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:1887
現在:2


ラジオボタンの制御

ページOpenOffice.org FAQの登録ページ
投稿者もとたか
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2008-06-07 14:26:39 (土)
OSVista
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

宜しくお願いします。

Calcでラジオボタンを使っています。 マクロ側から、制御したいのですが、どうにもなりません。

ラジオボタン 名前 optWeekendOn コントロール名前 radWeekend 追加情報   On

ラジオボタン 名前 optWeekendOff コントロール名前 radWeekend 追加情報   Off

どちらのラジオボタンをチェックしていても、 obForm.getByName("radWeekend").Name を実行すると、 radWeekend とでます

どちらのラジオボタンをチェックしていても、 obForm.getByName("radWeekend").Tag を実行すると、 On とでます

希望は、 名前 optWeekendOnのラジオボタンを選んでいれば、 On と表示し、 名前 optWeekendOffのラジオボタンを選んでいれば、 Off と表示したいのです。

obForm.getByName("radWeekend").*****

***** の部分の標記方法が、ネットでいくら探しても 見つけることができなくて、、、

すいません、宜しくお願いします。


無題

もとたか (2008-06-07 14:28:18 (土))

すいません、 行頭に、***** とつけたら、変な標記になりました。
すいません。

obForm.getByName("radWeekend").*****
この、***** の部分の標記方法が、ネットでいくら探しても、
見つけることができなくて、、、

すいません、宜しくお願いします。

State

はにゃ? (2008-06-07 18:57:16 (土))

ラジオボタンの状態は State プロパティを参照すると状態が分かります。

If obForm.getByName("optWeekendOn").State = 1 Then
  msgbox "ON"
ElseIf obForm.getByName("optWeekendOff").State = 1 Then
  msgbox "OFF"
End If


フォーム上ではコントロールに同じ名前を付けることが許容されているので、同じ名前をコントロールに付けた状態で getByName メソッドで取得しようとすると最初に見つかったものが取得されてしまいます。コントロールに別々の「名前」を付けてやってください。

そうすると、

もとたか (2008-06-08 00:45:20 (日))

はにゃさん、いつもありがとうございます

同じ名前をコントロールに付けた状態で getByName メソッドで

取得しようとすると最初に見つかったものが取得されてしまいます。
はい、確認しました。

コントロールに別々の「名前」を付けると、
今度は、いわゆるラジオボタンの、
こっちをチェックしたら、そっちがチェックが外れ、
そっちをチェックしたら、こっちがチェックが外れる、
という制御ができなくなりました。

どうしたらいいのでしょうか?
排他チェックの制御って、どこでするんでしょうか?

引き続き、宜しくお願いします。

あー

はにゃ? (2008-06-08 01:49:26 (日))

そういえば、そんなものが着き纏うんでした。

排他制御するために、「同じ名前」をグループ化したいオプションボタンに付けて次のようにするといいようです。各オプションボタンに固有の参照値などを振っておきます。(参照値 (オン) RefValue、参照値 (オフ) SecondaryRefValue)

以下の例は Writer ですが、フォーム取得以降は同じです。getGroupByName メソッドで同じ名前の付けられたオプションボタンのグループを取得します。(このメソッドの二つ目の引数のモードは out なので与えた引数に値が代入されます。)

Sub Main
 oDoc = ThisComponent
 oForm = oDoc.getDrawPage().getForms().getByIndex(0)

 oControls = Array()
 oForm.getGroupByName("OptionButton1",oControls)
 
 sValue = ""
 
 For i = 0 To UBound(oControls) step 1
   If oControls(i).State = 1 Then
     sValue = oControls(i).RefValue
     Exit For
   End If
 Next
 
 Select Case sValue
 Case "On"
   msgbox "on"
 Case "Off"
   msgbox "off"
 End Select
End Sub

無題

(2008-06-08 02:18:46 (日))

できました!

ありがとうございますーーー

完了

M.Kamataki (2008-06-08 07:45:14 (日))

ありがとうございます。見づらい部分は編集で直しました。(行頭の*は~でエスケープできます)

お名前:
題名: