OptionButton控件应用方案.docx
- 文档编号:23535587
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:21
- 大小:121.58KB
OptionButton控件应用方案.docx
《OptionButton控件应用方案.docx》由会员分享,可在线阅读,更多相关《OptionButton控件应用方案.docx(21页珍藏版)》请在冰豆网上搜索。
OptionButton控件应用方案
OptionButton控件应用方案
知识讲解
1.功能
OptionButton控件又称为单选按钮控件,通常用于显示一个可以打开或者关闭的选项。
2.属性
OptionButton控件的常用属性介绍如表1所示。
表1OptionButton控件的常用属性
编号
属性
说明
1
DisabledPicture
返回或设置一个对图片的引用,该图片在控件无效时显示在控件中
2
DownPicture
返回或设置一个对图片的引用,该图片在控件被单击并处于按下状态时显示在控件中
3
MaskColor
返回或设置一个在按钮的图片中作为“掩码”(即透明状态时)的颜色
4
Picture
返回或设置控件中要显示的图片
5
Style
返回或设置一个值,该值用来指示控件的显示类型和行为。
该属性在运行时为只读
6
UseMaskColor
返回或设置一个值,该值决定了赋值给MaskColor属性的颜色是否被用作“掩码”
7
Value
返回或设置控件的状态
下面对比较重要的属性进行详细介绍。
(1)MaskColor属性
返回或设置一个在按钮的图片中作为“掩码”的颜色。
语法:
object.MaskColor[=color]
object:
对象表达式。
color:
一个决定作为掩码的颜色的值或常数。
(2)Style属性
返回或设置一个值,该值用来指示控件的显示类型。
该属性在运行时只读。
语法:
object.Style
object:
对象表达式。
Style:
该值用于指定控件的样式。
当设置值为0时,控件显示为在其旁边有一个标签的选项按钮;当设置值为1时,控件以图形的样式显示,此时OptionButton控件显示为类似CommandButton控件的样式。
将OptionButton控件的Style属性设置为不同值时的效果,如图1所示。
图1Style属性值从左到右分别是0,1
(3)Value属性
返回或设置控件的状态。
语法:
object.Value[=value]
object:
对象表达式。
value:
该值指定控件的状态,当设置值为True时,表示已经选择了该控件;当设置值为False时,表示没有选择该控件。
示例:
下例中,在窗体启动时将Option1控件的Value属性设置为False,将Option2控件的Value属性设置为True,则运行时Option2控件将处于被选中的状态,如图2所示。
图2Value属性应用示例
程序完整代码如下:
'窗体启动时设置单选按钮控件状态
PrivateSubForm_Load()
Option1.Value=False
Option2.Value=True
EndSub
应用一:
启动时设置Option控件非选状态
窗体启动时,如果OptionButton控件组中所有OptionButton控件均为非选状态,系统会自动设置其中一个OptionButton控件为选中状态。
如果想让窗体启动时所有OptionButton控件均处于非选状态。
最终效果如图3所示。
图3启动时设置Option控件非选状态
程序代码如下:
★★★★★Form1★★★★★★
'窗体启动时设置Option控件非选状态
PrivateSubForm_Activate()
DimmycontrolAsControl'声明Control类型变量
ForEachmycontrolInMe.Controls'遍历Controls集合
'如果对象类型为OptionButton就将该对象的Value属性设置为False
IfTypeOfmycontrolIsOptionButtonThenmycontrol.Value=False
Next
EndSub
应用二:
如何实现两组Option控件互不关联
OptionButton控件显示一个可以打开或者关闭的选项。
在选项组中用OptionButton显示选项,用户只能选择其中的一项。
为实现两组Option控件互不关联,可以将两组Option控件分别放在不同容器中,如Frame控件、PictureBox控件,同一容器中的OptionButton控件为一个组。
最终效果如图4所示。
图4实现两组Option控件
应用三:
利用OptionButton控件设计赛跑比赛
本例中利用Value属性实现赛跑的小游戏。
在程序运行时,选择你认为跑得最快的选手,然后单击【开始】按钮,开始比赛,其实现界面如图5所示。
图5赛跑进行中界面
完整程序代码
Dimstart,finish,moneyAsInteger
'利用OptionButton控件设计赛跑比赛
PrivateSubCommand1_Click()
IfOption1(0).Value=FalseAndOption1
(1).Value=FalseAndOption1
(2).Value=FalseAndOption1(3).Value=FalseThen'当所有单选框都为未选定状态时
MsgBox"请选择选手",,"信息提示"'提示对话框
Else'否则
Fori=0To3'循环
IfOption1(i).Value=TrueThen'当某单选框被选中时
ExitFor'退出循环
Else'否则
Ifi=3Then'当i等于3
ExitSub'跳出过程
EndIf
EndIf
Nexti
money=money–20'减少20
Label2.Caption=money'显示money值
Command1.Enabled=False'按钮禁用
Do'Do循环
no=Int(Rnd*4)'生成随0-3随机数
wit=Int(Rnd*21)+23'生成0到20随机数
'移动Image1数组元素的位置
Image1(no).MoveImage1(no).Left+wit,Image1(no).Top
pause(0.03)'调用pause过程延时0.03秒
LoopUntilImage1(no).Left+Image1(no).Width>finish
IfOption1(no).Value=TrueThen
MsgBoxOption1(no).Caption+"赢了!
"
money=money+60
Label2.Caption=money
Else
MsgBox"你输了!
"
EndIf
Ifmoney=0Then
MsgBox"你已经没赌注了!
"
Else
Command1.Enabled=True
EndIf
Fori=0To3
Option1(i).Value=False
Image1(i).Left=start
Nexti
EndIf
EndSub
'退出程序
PrivateSubCommand2_Click()
End
EndSub
'窗体启动并进行初始化
PrivateSubForm_Load()
RandomizeTimer
start=Image1(0).Left
finish=6000
money=100
Label2.Caption=money
EndSub
Subpause(x)
w=Timer
DoWhileTimer-w<=m
wait=DoEvents
Loop
EndSub
应用四:
单选框控件(OptionButton)在工程中的应用
OptionButton控件显示一个可以打开或者关闭的选项。
例如在人员信息录入中,可以使用OptionButton控件选择性别,如图6所示。
图6职工档案登记界面
Value属性选项按钮的Value属性指出是否选定了此按钮。
选定时,数值将变为True。
可在代码中设置选项按钮的Value属性来选定按钮。
例如:
Opt1.Value=true
可用每个OptionButton控件的Value属性判断用户选定的选项并作出相应的响应。
对于没有分组的OptionButton控件,可用如下方法来判别:
'选择单选框内容并将值显示在文本框1中
PrivateSubOption1_Click()
IfOption1.Value=TrueThen
text1.Text=Option1.Caption
EndIf
EndSub
当用鼠标单击OptionButton控件(Option1)时,表示选中Option1控件,处理相应过程。
OptionButton控件也可以以选项按钮组的形式出现,只要把每一组置于一个图片框或Frame框架内(这两个控件起到容器的作用),如图7所示。
图7打印参数设置界面
把OptionButton控件放入图片框或Frame框架内可按如下步骤:
首先把图片框或Frame框架放置在窗体内,然后单击VB工具箱中的OptionButton控件。
选中该控件用鼠标将其移入图片框或Frame框架内,按住鼠标左键在图片框或Frame框架内画出OptionButton控件。
对于分组的OptionButton控件Option1(Index),可用如下的Click事件来判别:
'分组的OptionButton控件Option1(Index),用Click事件来判别各组的具体情况
PrivateSubOption1_Click(IndexAsInteger)
SelectCaseIndex
Case0
...
Case1
...
...
EndSelect
EndSub
应用五:
文件数据自动备份
实例说明
数据自动备份在应用软件中显得尤为重要。
运行程序,选择要读取的文本文件,单击“设置备份”按钮,在弹出的窗口中设置文件自动备份的时间,单击“确定”按钮保存设置,这样,程序就会根据用户的设置自动备份该文本文件。
实例运行结果如图8所示。
图8文件数据自动备份
思路与技术
利用Open语句保存或读取文件信息,将设置备份时间的数值保存到文本文件中,通过Timer控件时刻检测是否应该进行文件备份操作。
Open语句的语法格式如下:
OpenpathnameFormode[Accessaccess][lock]As[#]filenumber[Len=reclength]
参数说明:
●●pathname必要的。
字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。
●●mode必要的。
关键字,指定文件方式,有Append、Binary、Input、Output或Random方式。
如果未指定方式,则以Random访问方式打开文件。
●●access可选的。
关键字,说明打开的文件可以进行的操作,有Read、Write或ReadWrite操作。
●●lock可选的。
关键字,说明限定于其他进程打开的文件的操作,有Shared、LockRead、LockWrite和LockReadWrite操作。
●●filenumber必要的。
一个有效的文件号,范围在1到511之间。
使用FreeFile函数可得到下一个可用的文件号。
●●reclength可选的。
小于或等于32,767(字节)的一个数。
对于用随机访问方式打开的文件,该值就是记录长度。
对于顺序文件,该值就是缓冲字符数。
开发步骤
(1)新建一个标准工程,创建一个新窗体。
(2)在Form1窗体上添加一个Frame控件
,设置其Caption属性为“选择要读取的文本文件”。
(3)在Frame1控件中添加一个TextBox控件
和一个CommandButton控件
,并设置Command1的Caption属性。
(4)在Form1窗体上添加一个TextBox控件,设置其MultiLine属性为Ture,ScrollBars属性为2-Vartical;添加3个CommandButton控件,设置其Caption属性分别为“编辑”、“设置备份”和“退出”。
(5)在Form1窗体上添加一个Timer控件,设置其Interval属性为1000;添加一个CommonDialog控件
,设置其“名称”属性为Common1。
(6)选择VB菜单的“工程”→“添加窗体”,在工程中创建一个新窗体,默认的“名称”属性为Form2。
(7)在Form2窗体上添加一个Frame控件,默认的“名称”属性为Frame1。
(8)在Frame1控件中添加3个OptionButton控件
,并分别设置其Caption属性。
(9)在Form2窗体上添加两个CommandButton控件,设置其Caption属性分别为“确定”和“取消”。
表2Form1窗体中控件部分属性设置
控件名
属性
值
CommandButton
Name
Caption
Command1
<<
CommandButton
Name
Caption
Command2
编辑
CommandButton
Name
Caption
Command3
设置备份
CommandButton
Name
Caption
Command4
退出
CommonDialog
Name
Common1
Frame
Name
Caption
Frame1
选择要读取的文本文件
Label
Name
Label1
Text
Name
Text1
Text
Name
Text2
Timer
Name
Interval
Timer1
1000
表3Form2窗体中控件部分属性设置
控件名
属性
值
CommandButton
Name
Caption
Command1
确定
CommandButton
Name
Caption
Command2
取消
Frame
Name
Frame1
OptionButton
Name
Caption
Option1
每天备份
OptionButton
Name
Caption
Option2
每月备份
OptionButton
Name
Caption
Option3
每小时备份
(10)为Form1窗体添加如下代码。
DimIntextAsString
DimTStrAsString
DimiAsInteger
'单击按钮1,导入文件将路径和文本内容分别显示在文本框1和文本框2中
PrivateSubCommand1_Click()
Common1.Filter="ini文件(*.ini)|*.ini"
Common1.ShowOpen
IfCommon1.FileName=""Then
ExitSub
Else
Text2.Text=""
Text1.Text=Common1.FileName
Open(Common1.FileName)ForInputAs#1
DoWhileNotEOF
(1)
LineInput#1,Intext
Text2.Text=Text2.Text&Intext
Loop
Close#1
EndIf
EndSub
'单击编辑按钮,Text2可编辑并设置光标焦点在Text2上
PrivateSubCommand2_Click()
Text2.Enabled=True
Text2.SetFocus
EndSub
'单击设置备份按钮,打开窗体2
PrivateSubCommand3_Click()
Form2.Show1
EndSub
'按要求备份文件后退出程序
PrivateSubCommand4_Click()
IfTStr="TD"Then'每天备份
Open(App.Path&"\Setday.ini")ForInputAs#1
LineInput#1,Intext
Close#1
IfTrim(Intext)<>Str(Date)Then
Label1.Caption="正在备份文件..."
Open(App.Path&"\DataBackup\"&Date&".txt")ForOutputAs#2
Print#2,Text2.Text
Close#2
Label1.Caption=""
Open(App.Path&"\setday.ini")ForOutputAs#3
Print#3,Date
Close#3
EndIf
ElseIfTStr="TM"Then'每月备份
Open(App.Path&"\SetMonth.ini")ForInputAs#1
LineInput#1,Intext
Close#1
IfTrim(Intext)<>Trim(Str(DatePart("m",Date)))Then
Label1.Caption="正在备份文件..."
Open(App.Path&"\DataBackup\"&DatePart("m",Date)&"月份数据备份.txt")ForOutputAs#2
Print#2,Text2.Text
Close#2
Label1.Caption=""
Open(App.Path&"\SetMonth.ini")ForOutputAs#3
Print#3,DatePart("m",Date)
Close#3
EndIf
EndIf
End
EndSub
'窗体1为活动窗口设置变量TStr的值
PrivateSubForm_Activate()
Open(App.Path&"\Set.ini")ForInputAs#1
LineInput#1,Intext
IfIntext=1Then
TStr="TD"
ElseIfIntext=2Then
TStr="TM"
ElseIfIntext=3Then
TStr="TH"
EndIf
Close#1
EndSub
'窗体启动并初始化
PrivateSubForm_Load()
Timer1.Enabled=True
i=1
EndSub
'窗体1卸载时先按要求备份文件
PrivateSubForm_Unload(CancelAsInteger)
IfTStr="TD"Then'每天备份
Open(App.Path&"\Setday.ini")ForInputAs#1
LineInput#1,Intext
Close#1
IfTrim(Intext)<>Str(Date)Then
Label1.Caption="正在备份文件..."
Open(App.Path&"\DataBackup\"&Date&".txt")ForOutputAs#2
Print#2,Text2.Text
Close#2
Label1.Caption=""
Open(App.Path&"\setday.ini")ForOutputAs#3
Print#3,Date
Close#3
EndIf
ElseIfTStr="TM"Then'每月备份
Open(App.Path&"\SetMonth.ini")ForInputAs#1
LineInput#1,Intext
Close#1
IfTrim(Intext)<>Trim(Str(DatePart("m",Date)))Then
Label1.Caption="正在备份文件..."
Open(App.Path&"\DataBackup\"&DatePart("m",Date)&"月份数据备份.txt")ForOutputAs#2
Print#2,Text2.Text
Close#2
Label1.Caption=""
Open(App.Path&"\SetMonth.ini")ForOutputAs#3
Print#3,DatePart("m",Date)
Close#3
EndIf
EndIf
EndSub
PrivateSubTimer1_Timer()
IfTStr="TH"Then
i=i+1
Ifi>3600Then
Label1.Caption="正在备份文件..."
Open(App.Path&"\DataBackup\"&Format(Time,"hh-mm-ss")&".txt")ForOutputAs#1
Print#1,Text2.Text
Close#1
Label1.Caption=""
i=1
EndIf
EndIf
EndSub
(11)为Form2窗体添加如下代码。
'单击确定按钮设置变量的值
PrivateSubCommand1_Click()
DimTNAsInteger
IfOption1.Value=TrueThen
TN=1'每天备份
ElseIfOption2.Value=TrueThen
TN=2'每月备份
ElseIfOption3.Value=TrueThen
TN=3'每小时备份
EndIf
Open(App.Path&"\set.ini")ForOutputAs#1
Print#1,TN
Close#1
MsgBox"设置完成!
",64,"提示信息"
EndSub
'退出程序
PrivateSubCommand2_Click()
UnloadMe
EndSub
'窗体启动
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OptionButton 控件 应用 方案
![提示](https://static.bdocx.com/images/bang_tan.gif)