OOobbs/66
質問
LinuxでOOo1.1.2を使用しています。オプション(ラジオ)ボタンの取扱いについてご教示お願いいたします。 シートにオプションボタン3個(同一グループとして機能させたい)を設置しました。デザインモードにして選択右クリックで、コントロール-->全般タグと進み、名前欄にそれぞれ『Option1』『Option2』『Option3』と記入し、順序欄の数値は全て0に統一(グループ0の意味)しました。 この状態で、デザインモードをOFFにしオプションボタンを選択すると、3個共に全て選択状態になってしまいました。この事から順序欄の0と言う統一値はグループ化の判断には無関係で有ることが分かりました。 そこで名前欄を3個共全て『Option1』に統一してデザインモードOFFで選択をしてみると、3個のうち選択した1個だけに●マークが付き、グループ化の目的が達成出来ました。 オプションボタンが選択状態に有るか否かの判断は、Basicでは『state』プロパティで出来る事は分かりましたが、この3個のオプションボタンの名前が皆同じ為、何れが選択されているのかを判断する方法が分かりません。宣しくお願い致します。 コードは下記に示す様に作成しています。 Sub Option_Buttun_Click oSheet=ThisComponent.Sheets("表1") oDraw=oSheet.DrawPage oForm=oDraw.Forms("Standard") oOpt=oForm.getByName("Option1") if oOpt.state=1 AND oOpt.??? then msgbox "1番目が選択" if oOpt.state=1 AND oOpt.??? then msgbox "2番目が選択" if oOpt.state=1 AND oOpt.??? then msgbox "3番目が選択" End Sub 回答
一応,インデックスによってオプションボタンコントロールのオブジェクトが別々に取得できたので,getByIndex によってそれぞれのオプションボタンコントロールのオブジェクトを取得して State プロパティーで判断できます。 もっと華麗な方法はないんでしょうか?
はにゃさん、ご回答有難う御座います。早速下記のようにコーディングを変更しましたら、出来ました。 oForm=oDraw.Forms("Standard") 'oOpt=oForm.getByName("Option1") <----変更後、これは意味が無くなった。 opt0=oForm.getByIndex(0) opt1=oForm.getByIndex(1) opt2=oForm.getByIndex(2) if opt0.state=1 then msgbox "0 is selected" if opt1.state=1 then msgbox "1 is selected" if opt2.state=1 then msgbox "2 is selected" 上記の方法は、シート上にオブジェクトとしてオプションボタン3個しか無い場合は良いのですが、オプションボタンを設置する前にプッシュボタン等他のオブジェクトを設置しているとgetByIndex(0)が他のオブジェクトを取得してしまいダメでした。 何のオブジェクトを取得したのかを判断する方法として、例えばgetByIndex(0)が何なのかは MsgBox opt0.Name 、MsgBox opt1.Name 、MsgBox opt2.Name を行うと、オプションボタン以外のオブジェクトに付けた名前が表示されるので判断出来ました。 ところが、3個のオプションボタンの内どれがopt0,opt1,opt2として認識されているのかは、Nameプロパティ実行結果が全て『Option1』となってしまうので分かりません。やむを得ず、シート上のオプションボタンを1個ずつ選択を行ってメッセージを出して確認をしました。この方法はシート上のオブジェクト数が少ない場合は可能ですが、数が多くなると確認作業の手間が大変です。 そこでオプションボタンのタイトルを取得することが出来ればオプションボタンも個々の区別がプログラム上のMsgBoxのみで調べる事が出来そうだと思いました。 このタイトルを取得するプロパティまたはメソッドは有るのでしょうか?
global g_opt_ID as Integer Sub opt_0_click 'オプションボタン0クリック g_opt_ID=1 End Sub Sub opt_1_click 'オプションボタン1クリック g_opt_ID=2 End Sub Sub opt_2_click 'オプションボタン2クリック g_opt_ID=3 End Sub このg_opt_IDの値をを他のプログラム中で判断してどのオプションボタンがクリックされているかを知る様にしました。-- Kuma? 2005-05-08 (日) 21:41:16
「追加情報」は、Model.Tagで取得できます。CInt関数でIntegerに変換して値として取得しています。ダイヤログマクロでも同様の方法は使えます。-- 河井? 2005-05-10 (火) 00:58:37
|