ラジオボタンの制御 †
ページ | OpenOffice.org FAQの登録ページ |
---|---|
投稿者 | もとたか |
分類 | |
優先順位 | |
状態 | |
カテゴリー | |
投稿日 | 2008-06-07 14:26:39 (土) |
OS | Vista |
依存するページ | |
バージョン |
メッセージ †
回答ページでは行末に「~」を付加する必要はありません |
宜しくお願いします。
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 (日))
ありがとうございます。見づらい部分は編集で直しました。(行頭の*は~でエスケープできます)