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

Q&A集[?]

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

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

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

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:3011
現在:1


ラジオボタンの初期値設定

ページOpenOffice.org FAQの登録ページ
投稿者Dyna
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-11-17 11:30:11 (水)
OSWindows XP
依存するページ
バージョン
edit/refer

メッセージ

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

ラジオボタン選択により処理分岐を行うようなマクロ作成を行っている初心者です。
こちらのサイトを参考にさせて頂きながら、グループ化したラジオボタンに付加項目の
設定を行う形で選択処理を作成してみましたが、初期起動状態でのデフォルト値の設定
方法がわからず困っております。

イベントのファイルを開いた際にラジオボタンのTrue位置及び、内容値(付加項目)に
決め打ちでデフォルト値を設定するような方法ってありますか?
調べてみても理解できるものがありませんでしたので・・・。

方法がありましたら、ご助言願います。 よろしくお願いします。


標準ステータス

はにゃ? (2010-11-17 18:09:14 (水))

フォームコントロールの属性を設定するダイアログで、標準ステータスの値を「選択されています」にします。

引き続きで・・・m(__)m

Dyna (2010-11-17 20:57:09 (水))

ご回答ありがとうございます。
設定を行うのはロード時にデフォルトとしたい物だけであっていますか?


重ね重ねで申し訳ありませんが、ロード時の初期値(内部値)をBASICの
ソース内で取得する記述方法がわかりません。
イベントのファイルを開いた際にデフォルト値を変数に持たせるには
どのように記述をしたらよいでしょうか?


申し訳ありません(汗)
引き続きお願いします。

Re: 引き続きで・・・m(__)m

M.Kamataki (2010-11-17 21:42:53 (水))

はにゃ?さんのOOoBasic Wikiサイトの以下のページはご覧になりましたか。

OOoBasic/Dialog/OptionButton
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FDialog%2FOptionButton

グループボックスはウィザードでも設定可能

M.Kamataki (2010-11-17 21:34:29 (水))

ラジオボタン(オプションボタン)をグループ化する方法とは別に初めからグループボックスを作成する方法もあります。ほぼ、このページでは余談ですが、一応書いておきます。

faq/4/1460「文章の先頭に”レ点”を入れられるボックスを置きたい」のコメント「ラジオボタンはグループボックスで」にグループボックスの作成例があります。

以下の画面のように「コントロールの選択」バーの「グループボックス」ボタンをオンにして、グループボックスを作成すると「グループ構成要素ウィザード」が起動します。

faq6_70_01.jpg

「グループ構成要素ウィザード」の以下の画面で「はい、以下のとおりです」のドロップダウンリストでラジオボタンのアイテムを選ぶと、それがはにゃ?さんの指摘された標準ステータスの値を「選択されています」になります。

faq6_70_02.jpg

上の画面のように「アイテム3」を選べば、以下の画面のように作成されたグループボックスの中のラジオボタンの選択状態は「アイテム3」となります。

faq6_70_03.jpg

なお、上の画面で「アイテム1」を選んでファイルを保存すると、今度はコントロール側の標準ステータスの設定は無視されて、保存状態が再現されます。

このような動作になっています。

標準ステータスの操作について

Dyna (2010-11-18 11:27:04 (木))

M.Kamataki さん~


非常にご丁寧な解説、ありがとうございます。~
早速、はにゃ?さんのサイトの参照と、ご教授頂きましたグループボックスを~
試してみました。~


初期設定としては行えましたが、いまいち処理判定に使用する為のStateの~
拾い方&セットの仕方がわかりません。~
getState、setStateで行いたいことが実現できそうな気がするのですが、~
わかりましたら、Basic記述例を教えていただけませんでしょうか。。。~


State値を判定に使用する為の記述~
▲侫.ぅ襪粒いた際に標準ステータスの取得~


が解れば前へ進めそうな感じです。~
ド素人なもので、申し訳ありません。宜しくお願いします。

ドキュメントの保存で状態指定が足りない場合

はにゃ? (2010-11-19 01:48:55 (金))

ドキュメントを開いた時などのイベントに次のマクロを割り当てます。以下のコードではフォーム機能で拡張されている方法を利用しています。
ChooseRadioValue 関数で指定したラジオボタングループのうちの特定の値に割り当てられたものを選択させます。
GetRadioValue 関数でラジオボタングループで現在選択されているものに割り当てられた値を取得します。
RefValue プロパティはグループ作成ダイアログで指定した値を保持しています。

Const RADIO_GROUP_1 As String = "RadioGroup1"

Sub DocumentLoadEvent(ev)
'  oDoc = ThisComponent
  oDoc = ev.Source
  oController = oDoc.getCurrentController()
  oSheet = oDoc.getSheets().getByIndex(0)
  oForm = oSheet.getDrawPage().getForms().getByIndex(0)
  
  ' 値を設定
  ChooseRadioValue(oForm, RADIO_GROUP_1, "2")
  
  ' 値を取得
  sValue = GetRadioValue(oForm, RADIO_GROUP_1)
  msgbox sValue
End Sub


Function GetRadioValue(oForm As Object, _
    sRadioGroupName As String) As String
  
  Dim sFound As String
  Dim oControlModels() As Object
  oForm.getGroupByName(sRadioGroupName, oControlModels)
  
  For i = 0 To UBound(oControlModels) step 1
    oControlModel = oControlModels(i)
    'If oControlModel.State = 1 Then
    If oControlModel.CurrentValue = 1 Then
      sFound = oControlModel.RefValue
      Exit For
    End If
  Next
  GetRadioValue = sFound
End Function


Function ChooseRadioValue(oForm As Object, _
    sRadioGroupName As String, nRefValue As String)
  
  Dim oControlModels() As Object
  oForm.getGroupByName(sRadioGroupName, oControlModels)
  
  For i = 0 To UBound(oControlModels) step 1
    oControlModel = oControlModels(i)
    If oControlModel.RefValue = nRefValue Then
      oControlModel.State = 1
      Exit For
    End If
  Next
End Function


標準ステータスは保存時に選択されていた項目になると思います。
上記の方法でラジオボタンを切り替えるとイベントが発生するかどうか確認していません。

ありがとうござました

Dyna (2010-11-19 15:08:16 (金))

はにゃ? さん

正に行いたかった事が実装できました。
ありがとうございました。
参考コードを見て、想像していたものより遥かに工夫が必要でしたのでビックリしました。
他のイベントも確認しましたが、うまく動いてくれているようです。

お名前:
題名:


添付ファイル: filefaq6_70_03.jpg 543件 [詳細] filefaq6_70_02.jpg 565件 [詳細] filefaq6_70_01.jpg 519件 [詳細]