menu2.rb
001 require 'phi'
002 require 'dialogs'
003
004 def ok_msg(msg)
005 Phi::message_dlg(msg, Phi::MT_INFORMATION, [Phi::MB_OK], 0)
006 end
007
008 form = Phi::Form.new(:form1, 'formです')
009 form.height = 95
010 button = Phi::Button.new(form, :button1, 'ボタン')
011 label = Phi::Label.new(form, :label1, '')
012 button.align = Phi::AL_TOP
013 label.align = Phi::AL_CLIENT
014 label.color = Phi::CL_WHITE
015
016 Phi::new_menu(form, :menu1, [
017 menu_file = Phi::new_item('ファイル(&F)', '', :menu_file1).add(
018 Phi::new_sub_menu('サブ', :menu_sub1, [
019 Phi::new_item("チェック1", '', :menu_check1, true),
020 Phi::new_line,
021 Phi::new_item("ラジオ1", '', :menu_radio1, false),
022 Phi::new_item("ラジオ2", '', :menu_radio2, false),
023 ]),
024 Phi::new_line,
025 Phi::new_item("閉じる(&C)", '', :menu_close1)
026 ),
027 menu_edit = Phi::new_item('編集(&E)', '', :menu_edit1).add(
028 Phi::new_item('切り取り(&T)', 'Ctrl+X', :menu_cut1),
029 Phi::new_item('コピー(&C)', 'Ctrl+C', :menu_copy1),
030 Phi::new_item('貼りつけ(&P)', 'Ctrl+V', :menu_paste1)
031 ),
032 menu_help = Phi::new_item('ヘルプ(&H)', 'Ctrl+H', :menu_help1).add(
033 Phi::new_item('このソフトについて(&A)', '', :menu_about1, false, false)
034 )
035 ])
036
037
038 form.menu_radio1.radio_item = true
039 form.menu_radio2.radio_item = true
040 form.menu_radio1.group_index = 0
041 form.menu_radio2.group_index = 0
042 form.menu_radio1.checked = true
043
044
045 # event
046 form.menu_radio1.on_click = proc do
047 unless form.menu_radio1.checked?
048 form.menu_radio1.checked = true
049 end
050 end
051
052 form.menu_radio2.on_click = proc do
053 unless form.menu_radio2.checked?
054 form.menu_radio2.checked = true
055 end
056 end
057
058 form.menu_check1.on_click = proc do
059 if form.menu_check1.checked?
060 form.menu_check1.checked = false
061 else
062 form.menu_check1.checked = true
063 end
064 end
065
066 form.menu_close1.on_click = proc do
067 exit
068 end
069
070 form.menu_copy1.on_click = proc do
071 ok_msg('コピー')
072 end
073
074 button.on_click = proc do
075 if form.menu_check1.checked?
076 if form.menu_radio1.checked?
077 label.caption = 'チェック1とラジオ1がチェックされています。'
078 elsif form.menu_radio2.checked?
079 label.caption = 'チェック1とラジオ2がチェックされています。'
080 else
081 ok_msg('BUG')
082 end
083 else
084 label.caption = 'チェック1がチェックされていません。'
085 end
086 end
087
088 form.show
089 Phi.mainloop
このスクリプトを実行すると、このような ウィンドウがあらわれます。