第七章 常用 控件 (4学时 )
7.1 单选按钮和复选框
7.2 框架
7.3 列表框和组合框
7.4 滚动条和 Slide控件
7.5 时钟
7.6 ProgressBar控件
7.7 UpDown控件
7.8 Animation控件
7.9 SSTab控件
7.10 鼠标器和键盘
1,标准控件内部控件出现在工具箱上的控件,20个
2,ActiveX控件
ActiveX部件:是可以重复使用的编程代码和数据;
是由用 ActiveX技术创建的一个或多个对象所组成。
ActiveX部件文件:扩展名 OCX,在 Windows的 SYSTEM目录中。
ActiveX部件
ActiveX控件
ActiveX文档
ActiveX DLL
ActiveX EXE
ActiveX控件 添加到工具箱:
工程 /部件 选定控件课前准备常用 ActiveX控件所在的文件:
ActiveX控件 ActiveX部件 文件名通用对话框
(CommonDialog)
Microsoft Common Dialog Control 6.0 COMDLG32
.OCX
ToolBar
Microsoft Windows
Common Control 6.0
MSCOMCTL
.OCX
StatusBar
ProgressBar
Slider
Animation Microsoft Windows
Common Control-2 6.0
MSCOMCT2
.OCX
UpDown
ActiveX控件与 ActiveX DLL/EXE的区别:
ActiveX控件:
有界面用“工程 /部件”命令加载工具箱上有图标
ActiveXDLL/EXE:
没有界面用“工程 /引用”设置引用工具箱上没有图标
3,可插入对象
Windows应用程序的对象可插入对象,可添加到工具箱上同标准控件一样使用例如,Microsoft Excel工作表
7.1 单选钮和复选框
Caption属性,文本标题。
Alignment属性
0:控件钮在左边,标题显示在右边。
1:控件钮在右边,标题显示在左边。
Value属性单选钮 (逻辑型 ) 检查 框 (数值型)
True:选定 0--Unchecked,未被 选定
False:未选定 1--Checked:选定
2--Grayed,灰色,禁止选择
Style属性
0--Standard:标准方式
1--Graphical:图形 方式事件:
Click
因为单击时自动改变状态,故 不需要编写过程。
见后页实例例 7.1 用单选钮和检查框设置文本框的字体 。
7.2 框架 (Frame)
框架内控件的创建方法:
方法 1:单击工具箱上的工具,然后用出现的,+”指针,在框架中适当位置拖拉出适当大小的控件。
不能使用双击工具箱上图标的自动方式。
方法 2:将控件“剪切”到剪贴板,然后粘贴 (Ctrl+V)到框架。
框架设 Caption为 "字体 "
Caption属性,框架标题
Enabled属性
False:标题呈灰色,不允许对框架内的对象进行操作。
Visible属性
True:框架及其控件可见。
False:框架及其控件被隐含起来。
Click,DblClick事件一般不需要编写框架的事件过程。
例 7.2 框架用法示例
7.3 列表框和组合框列表框各主要属性的值:
List1.ListIndex = 3 (下标从 0开始的 )
List1,ListCount = 5
List1,Selected(3) = True,其余为 False。
List1,Sorted = False,没有排序。
List1,Text 为,cox”,
与 List1,List(List1,ListIndex)相等
List1
下拉式组合框 简单组合框 下拉式列表框列表框各主要属性的值:
List1.ListIndex = 0
List1,ListCount = 8
List1,Selected(3) = True
其余为 False。
List1,Sorted = False
List1,Text 为,李宁”
Combo1
1,共有的重要属性
(P:可在程序中设置或引用,D,可在设计状态设置 )
List,PD
字符型数组,存放列表框的项目,下标是从 0开始。
ListIndex,P
选中的项目的序号,没有项目被选定时为 -1
ListCount,P
项目的数量,ListCount-1是最后一项的下标。
Sorted,D
True:按字母顺序排列。
False:按加入先后顺序排列。
Text,P
列表项中被选定的内容,
List 1.List(List 1.ListIndex) = List1.Text。
2,列表框的特有属性
Selected,P
逻辑数组。
Selected(i)的值为 True表示第 i+1项被选中。
MultiSelect
0-None:禁止多项选择。
1-Simple:简单多项选择。
2-Extended:扩展多项选择。
3,列表框的特有属性
Style
类型 Style 输入下拉式组合框 0 能简单组合框 1 能下拉式列表框 2 不能
4,方法
AddItem
对象,AddItem item [,index]
RemoveItem
对象,RemoveItem index
Clear
对象,Clear
5,事件列表框,Click,DblClick
组合框,Click,只有简单组合框才有 DblClick事件一般不需要编写 Click事件过程通常在单击命令按钮或发生 DblClick事件时才读取 Text属性例 7.3 对列表框进行项目添加、修改和删除操作。
例 7.4 对列表框进行项目添加、修改和删除操作。
C h e c k 1
C o m b o 1
T e x t 1
C h e c k 2
O p t i o n 1
O p t i o n 2
7.4 滚动条和 Slider控件共同具有的重要属性
Max:最大值 -32,768~32,767
Min:最小值 -32,768~32,767
SmallChange 最小变动值,单击箭头时移动的增量值。
LargeChange 最大变动值,单击空白处时移动的增量值。
Value 滑块所处位置所代表的值。
水平滚动条垂直滚动条
SmallChange Min Value Max SmallChange
LargeChange LargeChange
Sli
de
r
控件
Mi n 属性
Max 属性
Sm a l l C h an g e 属性
L ar g e C h an g e 属性事件:
Scroll:拖动滑块时会触发 Scroll事件。
Change,Value属性改变时触发 Change事件。
例 7.5用一个文本框 (txtSpeed)显示滚动条 (hsbSpeed)滑块当前位置所代表的值。
例 7.6调色板程序。
Sub hsbSpeed_Change()
txtSpeed.Text= hsbSpeed.Value
End Sub
例 7.7用 Slider控件设置文本框中的字体大小。
时钟控件以 Interval为时间间隔产生 Timer事件。
属性
Interval
单位,ms(0.001s),0.5秒是 500。
Interval= 0:屏蔽计时器。
Enabled属性
True:有效计时
False:停止时钟工作事件
Timer
例 7.8 定时的闹钟例 7.9 蝴蝶飞舞
7.5 时钟 (Timer)
M a x 属性
M in 属性
M o u se Po in te r 属性
B o r d e r S ty le 属性
A p p e a r a n c e 属性
O r ie n ta tio n 属性
Sc r o lli n g 属性例 7.10 用进度条指示一个大数组的计算进度。
7.6 ProgressBar控件位于 Microsoft Windows Common Control 6.0部件重要属性:
Max,Min:该控件的界限
Value:决定控件被填充多少位于 Microsoft Windows Common Control-2 6.0
通常与伙伴控件,捆绑”在一起使用。
UpDown应用示例
B u d d y C o n t r o l B u d d y P r o p e r t y
M i n M a xV a l u e I n c r e m e n t
7.7 UpDown控件位于 Microsoft Windows Common Control-2 6.0
属性:
Center:决定动画是否在控件的中央播放
AutoPlay属性:决定在用 Open方法打开文件时是否自动播放。
方法:
Open:打开文件
Play,播放动画
Stop:停止播放
Close:关闭文件例 7.11 为例 7.10配上动画。
7.8 Animation控件位于 Microsoft Tabbed Dialog Control 6.0
重要属性
Style:选项卡样式
Tabs:选项卡总数
TabsPerRow:每一行选项卡的数目
Rows:选项卡总行数
TabOrientation:选项卡的位置。
ShowFocusRect:决定选项卡上的焦点矩形是否可视。
Tab:当前选项卡的序号。
序号从 0开始,如果 Tab为 1,则第 二个选项卡为当前活动的选项卡。
例 7.12 选项卡制作示例
7.9 SSTab控件
7.10 鼠标器和键盘
1,鼠标器事件注意:鼠标事件发生在什么对象上,是窗体上还是控件上。
MouseDown事件
Sub Form_MouseDown(Button As Integer,Shift As Integer,
X As Single,Y As Single)(发生在窗体上的事件过程)
MouseUp事件
Sub Form_MouseUp(Button As Integer,Shift As Integer,
X As Single,Y As Single) (发生在窗体上的事件过程)
MouseMove事件
Sub Form_MouseMove(Button As Integer,Shift As Integer,
X As Single,Y As Single) (发生在窗体上的事件过程)
(1) Button参数
b2 b1 b0
B0为 1:按下了左键
B1为 1:按下了右键
B2为 1:按下了中键例如,Button为 2(010B),即 B1 为 1,表示按下了右键;
如果按了左键,则 B0为 1,B1和 B2为 0,Button为 1(001B)
If Shift = 1 Then '或者 If Shift = vbLeftButton Then

' 这是按了左健后执行的代码

Endif
使用符号常数:
1—vbLeftButton:用户按下左键触发了鼠标事件;
2—vbRightButton:用户按下右键触发了鼠标事件;
4—vbMiddleButton::用户按下中键触发了鼠标事件 。
(2) Shift参数
B2 B1 b0
B0为 1:按下了 Shift键
B1为 1:按下了 Ctrl键
B2为 1:按下了 Alt键例如,Button为 2(010B),即 B1 为 1,表示 仅 按下了 Shift键;
如果同时按了 Ctrl和 Shift键,则 B0和 B1为 1,B2为 0,Button为 3(011B)
注意,可能同时按下两个或三个键。如果 Button<>1成立,并不表示没有按下
Shift,因为可能其它键也被按下了。如 果要测试按下了某个键,则应用 and进行位运算。例如,Button and 1成立,表示肯定按下了 Shift(可能其它键也被按下了)。
If Shift = 1 and Button = 2 Then

‘ 这是 仅 按住 Ctrl了健单击鼠标后执行的代码

End If
思考,Shift = 1 and Button and 2表示什么意义?
符号常数:
1—vbShiftMask
2—vbCtrlMask
4—vbAltMask
Shfit And vbCtrlMask为真:
按下了 Ctrl键
CBool(Shift And vbCtrlMask) Or CBool(Shift And vbShiftMask)为真:
按下了 Ctrl键和 Shift键
(3) x,y:鼠标的当前位置例 7.13 显示鼠标器指针所指的位置例 7.14 画圆程序按下鼠标右键画园,按下鼠标左键移动时画线。
在画线时用 note14.ico作为鼠标的指针。
2,键盘事件
KeyPress事件过程
Sub Form_KeyPress(KeyAscii As Integer)
Sub object_KeyPress([index As Integer,]KeyAscii As Integer)
KeyDown事件过程
Sub Form_KeyDown(keycode As Integer,shift As Integer)
Sub object_KeyDown([index As Integer,]keycode As Integer,
shift As Integer)
KeyUp和 KeyDown事件过程
Sub Form_KeyUp(keycode As Integer,shift As Integer)
Sub object_KeyUp([index As Integer,]keycode As Integer,
shift As Integer)
参数说明
Shift与鼠标事件过程 Shift相同
KeyCode:键盘扫描码
KeyAscii:字符 ASCII码
KeyPress KeyDown和 KeyUp
事件发生的时间 输入一个 ASCII字符 按任意一个键参数值 KeyAscii接收到字符的 ASCII值
KeyCode接收到键的扫描码按 Shift+A时事件发生的次数事件发生一次 事件发生两次按 Shift+A时参数值
(键盘处于大写状态 )
97 第一次是 17
第二次是 65
按 Shift+A时参数值
(键盘处于小写状态 )
65 第一次是 17
第二次是 65
区别:
窗体的:
KeyPress
KeyDown
KeyUp
控件的:
KeyPress
KeyDown
KeyUp
窗体的 KeyPreview为 True焦点在控件上输入
Sub Form_KeyPress(KeyAscii AsInteger)
KeyAscii = KeyAscii + 1
End Sub
Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = KeyAscii + 1
End Sub
假定窗体 KeyPreview为 True,并有下面事件过程,
则当文本框中输入,1”时,实际上是得到的是,3”
? 窗体 KeyPreview为 False时 在文本框中输入,1”时,实际上是得到的是什么。
在这里作一点修改影响所有控件在这里作一点修改影响一个控件对输入的数据进行验证、限制和修改
1,修改输入数据。
接收大写字符将 KeyPreview设置为 True时
Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii >= Asc("a") And KeyAscii <= Asc("z") Then
KeyAscii = KeyAscii + Asc("A") - Asc("a")
End If
End Sub
如果把它改为某个控件的事件过程,效果一样吗?
2,限制数据输入文本框只能接收,0”~,9”的数字字符。
Sub txtExample_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If
End Sub
例 7.15 编写一个程序,当按下 Alt+F5时终止程序的运行。
'先把窗体的 KeyPreview设置为 True,再编写如下的程序:
Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)
'按下 Alt键时,Shift的值为 4
If (KeyCode = vbKeyF5) And (Shift = 4) Then
End
End If
End Sub
例 7.16,锤打红心,游戏
(1) 我们利用上,下,左,右四个箭头键控制,铁锤,
,?”,37(&H25),?”,38(&H26)
“?”,39(&H27),?”,40(&H28)
(2) 如果 Abs(Image1.Left - Image2.left < 300) And Abs(Image1.Top - Image2.Top
< 320)成立,则认为是重叠,,铁锤,锤打到,红心,。
(3) 在窗体上的时钟控件 (Timer1)过程中控制,红心,移动 。 Timer1的
Interval属性为 200,即每 1秒产生 5个 Timer事件 。
Image2
Image1
3.拖放自动拖放手工拖放
1,DragMode属性
0,(缺省 ),手工拖动模式
1,自动拖动模式
2,DragIcon属性拖动过程中显示的图标 (Ico或 Cur文件 )。
lblExample1.DragIcon=LoadPicture ("C:\Icons\Mail.ico")
lblExample2.DragIcon=picIcon.Picture
3,Drag方法当 DragMode为 0时,需用 Drag方法启动拖放
[控件名称,]Drag 参数
0:开始拖放操作
1(省略 ):结束拖放操作
2:取消拖放操作例 7.17拖放应用示例例 7.18拖放应用示例例 7.19 九宫游戏制作 9× 9的九宫界面设计先定制一个控件数组元素 lblGrid(0),
在运行时通过控件数组的特性生成其它元素拖放时实现源标签与目标标签的交换
4,OLE 拖放
OLEDragMode属性 (源控件设置 )
0----Manual:缺省,手工
1----Automatic:自动
OLEDropMode属性 (目标控件设置 )
0----None:缺省,目标控件不接受“放”
1----Manual:手工实现“放”操作。
2----Automatic:自动实现“放”
完全支持自动 OLE拖放:
PictureBox Image TextBox。
示例支持自动“拖”操作,不支持自动“放”:
ComboBox FileListBox DirListBox和 ListBox。
示例只支持 OLE拖放事件的控件有:
CheckBoxFrame OptionButton、
Label DriveListBox CommandButton
例 7.20 从 Windows资源管理器把文件的文件名拖到标签上
Sub Label1_OLEDragDrop(Data As DataObject,Effect As Long,_
Button As Integer,Shift As Integer,
X As Single,Y As Single)
Label1.Caption = Data.Files(1)
' 在资源管理器中选定文件且拖出时,系统就把所选定的文件名
'保存在 Data对象的 Files属性中,Files属性实质上是一个数组。
'Label1.Caption = Data.Files(1)语句将保存的第一个文件名显示在标签中
End Sub
OLEDropMode为 1(Manual)