版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章其他常用的语句及控件
本章主要内<
其他一些常用语句
框架(Frame)
滚动条(ScrollBar),
键盘与鼠标事件
通用对话框(CommonDialog)^^^B
文件系统控件」Qr+
10.1其他常用语句
10.1.1强制显式声明变量语句(OptionExplicit)
避免因为写错变量名而导致错误
例如,交换变量a、b的值
Temp二a
a=b
b=Tmp,把Temp写错成
运行结果是使b的值为o
OptionExplicit^^l,模块级声明
DimaAsInteger,bAsInteger,TempAsInteger
・・•
Temp=a^^!
a=b^^|
b=Tmp^^|
运行时VB就会发出警告"Variablenotdefined〃(变量未定
义),只有把Tmp改为Temp后才恢复正常
10.1.2定义变量类型
格式:Def类型标志字母范围
功能:在模块级声明段中定义变量(相应数据类型)
示例:Deflntm-P
10.1.3自定义数据类型■
用户可以利用
[Private|Public]Type
元素名lAs类型名
[元素名2As类型名2]・
EndType|
TypeRskRec^^l
编号AsString*3,用汉字表示字段名
姓名AsString*8
,性另UAsBoolean
出生日期AsDate
基本工资AsLong
EndType^^H
这里的Rsk_Rec是一个用户定义的数据记录类型,它由5个
元素(字段)组成
¥
10.1.4定义枚举类型
所谓“枚举”是指将变量的值一一列举出来,变量的值只限
于列举出来的值
[Public|Private]Enum枚举类型名
成员名1[=常数表达式]
成员名2上常数表达式]
EndEnum
例10.1应用枚举类型示例
输入一个数字表示星期几,判断输出是“休息日”还是“工
作日”
PrivateEnumweekdays'定义Weekdays为枚举类型
Sun
Mon
Tue
Wed
Thu
Fri
Sat
EndEnum
平十斗
PrivateSubCommandl_Click()
DimmydayAsweekdays,定义Myday为Weekdays枚举类型
myday=Val(InputBox("今天是星期几(0〜6)")),输入0〜6
Ifmyday<SunOrmyday>SatThen
MsgBox”输入的星期数错误”
Else
Ifmyday=SunOrmyday=SatThen
MsgBox”休息日“
Else
MsgBox”工作日”
EndIf
EndIf
EndSub羊
10.1.5GoTo型控制
包括GoTo语句和On.・・GoTo语句
1.GoTo语句■
语法格式:GoTo{行号标号}・
功能:改变程序的执行顺序,跳转到程序中指定的行开始执行
例10.2应用GoTo语句示例
PrivateSubForm_Load()
Show
Print”整型数”
GoToLinel,跳转到标号Linel指定的行
Print”单精度数”多
Linel:W
Print"字符串"¥
EndSub
2.On-GoTo语句
On.・・GoTo语句用来实现分支选择控制(类似于Select.・・End
Select)
语法格式:On数值表达式GoTo{行号表|标号表}■
功能:根据“数值表达式”的值,控制转移到几个指定的语句
行中的一个语句行。
例如
OnKGoToLinel,Line2,Line3
执行过程:将K四舍五入取整,如果其值为1,则转移到Linel
标号行;如果为2,则转移到Line2标号行;如果为3,则转移到
Line3标号行。如果K的值等于0或大于3,则自动执行本语句的
下一个语句V
10.1.6打印机输出
把信息直接送往打印机
格式:Printer.Print[表达式表]
(l)Page属性:设置当前页号
格式:Printer.Page
(2)NewPage方法:实现换页操作
格式:Printer.NewPage
(3)EndDoc方法:结束文件打印
您式:Printer.EndDoc
例10.3在打印机上打印文字“计算机程序设计”
PrivateSubCommandl_Click()
Printer.FontName="隶书”
Printer.FontSize=12
Printer.Print”计算机程序设计”,将文本放到Printer对象中
Printer.EndDoc,打印结束
EndSub
2.窗体输出
先把要输出的信息送到窗体上,再用PrintForm方法把
窗体上的内容打印出来
格式:[窗体名.]PrintForm
功能:把窗体上的信息输出到打印机
¥
10.1.7闲置循环与DoEvents语句
VB只有在发生事件时才执行相应的事件过程,如果没
有事件发生,则应用程序处于“闲置”状态
所谓闲置循环,就是当程序处于闲置状态时,用一个循
环来执行某些操作
为使在闲置循环中也能响应其他操作和事件,VB提供
[窗体号=]DoEvents[()].
功能:在闲置循环中,通过DoEvents语句可以把控制权
交给系统去处理所发生的事件
例10.4闲置循环和DoEvents应用示例
(1)建立一个文本框和二个命令按钮,两个事件过程:
^^|PrivateSubCommandl_Click()
Textl.FontSize=Textl.FontSize+1
EndSub
PrivateSubCommand!_Click()
End
EndSub
(2)编写SubMain过程
PrivateSubMAIN()
Forml.Show
DoWhileTrue,进入“闲置循环”
x=DoEvents,把控制权交给系统去处理所发生的事件
,否则不能处理其他事件
Forml.Textl.Text=Time
Loop
EndSub
(3)把SubMain设置为启动对象
程序运行后,进入闲置循环,此时将在文本框Textl中
不断地显示系统时间。
由于加入DoEvents函数,则可以在执行闲置循环过程
中执行其他操作,如重设窗体的大小及最大化/最小化,还
能响应命令按钮Commandl和Command2的单击事件等。
当其他操作完成后,又会回到闲置循环中继续执行
4
10.2框架(Frame)
框架的用途
作为容器放置其他控件对象,将这些控件对象分成可标
识的控件组;框架内的所有控件将随框架一起移动、显示
2.常用属性^■
Name属性和Caption属性
事件
可以响应Click和
在应用程序中一般不需要编写有关框架的事件过程
例10.5控制文本的字体、字号及颜色
⑴创建应用程序的用户界面和设置对象属性
在窗体上设置3个框架Framel、Frame2和Frame3
⑵编写程序代码
功能要求:在三个框架中分别选择字体、字号
和颜色,单击“确定”按钮后,文本框中的文本相
应属性会发生变化
PrivateSubForm_Load()
Optionl.Value=True
Option3.Value=True
Option5.Value=True
Textl.FontName=''宋体''
Textl.FontSize=16
Textl.ForeColor=RGB(0,0,255)¥
EndSub1M
¥
PrivateSubCommandl_Click()
IfOptionl.ValueThen
Text1.FontName=''宋体''
Else
Text1.FontName=''幼圆"
EndIf
IfOption3.ValueThen
Text1.FontSize=16
Else
Text1.FontSize=20
EndIf
IfOption5.ValueThen
Textl.ForeColor=RGB(0,0,255)
Else
Textl.ForeColor=RGBQ55,0,0)
EndIf
EndSub年
10.3滚动条
L滚动条的用途■
用程序和控件提供滚动功能,也可
水平滚动条(HScrollBar)和垂直滚动条(VScrollBar)
最小值(Min),最大值(Max);移动滚动块时,代表的值随之
改变
2.常用属性
(l)Min、Max属性:Min属性的默认值为0,Max属性的默认
值为32767^M
(2)Vahie属性:设置滚动块在滚动条中的位置值¥
(3)Smallchange最小变动值属性人*
(4)LargeChange最大变动值属性W
3.事件
滚动条控件可以识别io个事件,其中最常用的是
Scroll和Change^^^^H
(l)Scroll事件:当用鼠标拖动滚动块时,即触发
Scroll事件
(2)Change事件:当改变Value属性值时,即触发
Change事件
当释放滚动块、单击滚动条内空白处或滚动箭头
时,Change重彳牛就会发生。
¥**
例10.6设计一个调色板应用程序
建立三个水平滚动条作为红、绿、蓝三种基本颜色的输
入工具,合成的颜色显示在右边的标签中(图10.17),用其背
景颜色属性BackColor值的改变实现合成颜色的调色
■调色板应用
红jJ
绿jJ
蓝,
说明:根据调色原理,基本颜色有红、绿、蓝三种,选
择这三种颜色的不同比例,可以合成所需要的任意颜色
(1)创建应用程序的用户界面和设置对象属性
三个水平滚动条名称从上至下分别为HScrolU、HScroll2、
HScrolB
其Max属性均设置为255,Min属性均设置为0,
SmallChangeM性设置为1,LargeChange属性设置为10,
Value设置为0。
显示合成颜色的标签名为Labell
(2)编写程序代码
功能要求:通过操作(单击或拖动)滚动条,直接修改
RGB设置,从而得到标签背景所需的颜色
PrivateSubHScrolll_Change()
Labell.BackColor=RGB(HScrolll.Value,_
HScrolll.Value,HScrolB.Value)
EndSub
PrivateSubHScroll2_Change()
Labell.BackColor=RGB(HScrolll.Value,_
HScrolll.Value,HScrolB.Value)
EndSub
PrivateSubHScroll3_Change()
Labell.BackColor=RGB(HScrolll.Value9_
HScroll2.Value,HScrolB.Value)
EndSub
10.4图形方法和图形控件
4种图形控件:PictureBox控件、Image控件、Shape控
件和Line控件;图形方法
10.4.1坐标系
每个对象都定位于存放它的容器内
每个容器都有一个坐标系,它包括坐标原点,X坐标轴和
y坐标轴,默认的坐标原点(0,0)在容器对象的左上角
默认单位为Twip(提),还可以使用磅、像素、厘米等单
位
窗体的实际可用的高度和宽度由ScaleHeightff
ScaleWidth属性确定
CurrentX和CurrentY属性
10.4.2图形方法
使用Pset(画点)、Line(画线)、Circle(画圆)等图形方法,
可以方便地在窗体和图片框上绘制简单的图形
1.Pset(画点)方法■
格式:[对象名.]Pset[Step](x,y)[,颜色]■
功能:在对象的指定位置(x,y)上按选定的颜色画点
参数Step指定(x,y)是相对于当前坐标点的坐标
示例:下列语句能在坐标位置(500,900)处画一个红点:
Pset(500,900),RGB(255,0,0)^H
CurrentX=100:CurrentY=100^^|
PsetStep(400,800),RGB(255,0,0)
3.Circle(画圆)|_方__法_____
格式:
[对象名・]Circle[Step](x,y),半径【,颜色,起点,终点,纵横比]
功能:在对象上画圆、椭圆或圆弧■
说明:(l)(x,y)是圆、椭圆或圆弧的中心坐标,“半径”是圆、
(2)“起点”、“终点”(以弧度为单位)指定弧或扇形的起点
或终点位置,其范围从・2元到23“起点”的默认值为0,“终
点”的默认值为
(3)纵横比为圆的纵轴和横轴的尺寸比。当纵横比大于1时,
椭圆沿垂直方向拉长;当纵横比小于1时,椭圆沿水平方向拉
长。纵横比的默认值为1,将产生一个标准圆。
(4)可以省略中间的某个参数,但不能省略分隔参数的逗号
例167在窗体上画出一个扇形、圆、椭圆
PrivateSubForm_Load()
ConstPI=3.14159
Show
Circle(2500,1500),1200,vbBlue,-PI,-PI/2
CircleStep(-600,-600),600
CircleStep(O,0),600,,,,5/25
EndSub
10.4.3图片框(PictureBox)
TO
图片框(PictureBox)和图像框(Image)都是用于显示图形。
图片框可以作为其他控件的容器,还可以在图片框上面放置
其他控件,这些控件随图片框的移动而移动
Picture属性:用于设置在图片框中要显示的图像文件
Picturel.Picture=LoadPicture("图形文件名
Picturel.Picture=LoadPicture(),清除图片
Align属性:设置图片框在窗体中的显示方式
AutoSize属性:确定图片框如何与图形相适应
3.
⑴显示和消除图形:见Picture^^H
(3)用图形方法在图片框中画图形
可以使用Circle(画圆)、Line(画线)、Pset(画点)等方
法在图片框中画图形
一—▲一*
示例
PrivateSubForm_Load()^^H
Show
Picturel.Print”在图片框内写字和画圆“
Picturel.Circle(120051000),600,RGB(0,0,255)^H
Picturel.PSet(1200,1000),RGB(255,0,0)^H
EndSub^H
10.4.4像框(Image)
图像框(Image)控件的作用与图片框PictureBox控件相似,
但它只能用于显示图形,不能作为其他控件的容器
10.4.5Shape形状控件
VB提供了画图形的基本工具,如Shape(形状
控件)、Line(线控件)。
Shape控件和Line控件只用于表面装饰,不支
持任何事件。
10.4.6Line直级控件
Line直线控件可用来在窗体、框架和图片框中
绘制简单的线段。
fl10.8设计一个走动的时钟
(1)分析:本例分别以Second、Minite和Hour函数取得系统时
间
Time的秒、分和时数,再利用计时器控件,按一定时间间隔把时
间数转换为图形指针位置和显示出来
(2)创建应用程序的用户界面
计时器(Timerl),形状控件(Shapel),三条线控件(LineS,
LineM,LineH),四个标签(表示数字)
・工程1-Foral(Fora)SE®
(3)设置对象属性
Timerl的Interval属性为1000(1秒)
Shape1的Shape属性为3-Circle(圆形),FillStyle属性为0-
Solid(实心)
LineS,LineM,LineH的BorderWidth属性为1,2,4
(4)编写程序代码
OptionExplicit
Constpi=3.14159
Privatelen_SAsSingle,len_MAsSingle,len_HAsSingle
PrivateSubForm_Load()
,先取各指针的长度
,秒针长度
len_S=Sqr((LineS.Y2-LineS.Yl)A2+(LineS.X2-LineS.Xl)A2)
",分针长度
len_M=Sqr((LineM.Y2-LineM.Yl)A2+(LineM.X2-LineM.Xl)A2)
,时针长度
len_H=Sqr((LineH.Y2-LineH.Yl)A2+(LineH.X2-LineH.Xl)A2)
CallTimerlTimer
EndSub
PrivateSubTimerl_Timer()定时器的定时事件过程
DimsAsSingle,mAsSingle,hAsSingle
Forml.Caption=Time
s=Second(Time)
m=Minute(Time)
h=Hour(Time)+m/60
LineS.X2=LineS.Xl+len_S*Sin(pi*s/30),绘制秒针
LineS.Y2=LineS.Yl-len_S*Cos(pi*s/30)
LineM.X2=LineM.Xl+len_M*Sin(pi*m/30),绘制分针
LineM.Y2=LineM.Yl-len_M*Cos(pi*m/30)
Ifh>=12Thenh=h-12
LineH.X2=LineH.Xl+len_H*Sin(pi*h/6),绘制时针
LineH.Y2=LineH.Yl-len_H*Cos(pi*h/6)
EndSub
计算指针位置的方法
s秒_K
60秒In
K=27rS/60=7rs/30
x2=xl+x=xl+L*Cos(7r/2-k)=xl+L*Sink
LineM.X2=LineM.Xl+Lens*Sin(pi*s/30)
K(s秒)
10.5菜单设计
应用程序通过菜单为用户提供一组命令
菜单一般分为两种:即下拉式菜单和弹出式菜单
10.5.1下拉式菜单
下拉式菜单基本结构包括:顶层菜单、菜单项和子菜单
访问键快捷键子菜单提示符
Z.
顶层菜单文件⑥编辑@)视图⑪帮助QP
■HL一一广菜单项
菜单项新建Ctrl+N
打开.ra裆
复选标记文本文件
3保存Ctrl+S
另存为
分隔线
关闭©
10.5.2菜单编辑器
设计菜单的工具
启动菜单编辑器的方法
菜单编辑器分为上、下两部分,上半部分用来设置属性,
下半部分是菜单显示区,用来显示用户输入的菜单内容。
“标题"(Caption)输入框
供输入标题,也会同时显示在菜单显示区。菜单项的访问
键,用"(&字符)”格式
“名称"(Name)输入框
“索引”
“帮助上下文ID”输入框
“协调位置”列表框
“复选”框
“可见”框】
¥叱
例10.9编一程序,进行两个操作数的算术运算练习
设计步骤如下:■
(1)创建应用程序的用户界面和设置对象属性菜单栏向用户
提供功能选择,包括运算数的位数,运算符类型和退出程序
菜单设计
各个菜单项名称
(2)编写程序代码
功能要求
OptionExplicit,显式声明变量
DimsellAsInteger,sellAsString
DimrlAsLong
PrivateSubForm_Load()
sell=0,位数标记
sell=,运算标记
Randomize
EndSub
PrivateSubMnull_Click()
sell=1,设置位数标记
EndSub
PrivateSubMnul2_Click()
sell=10
EndSub
PrivateSubMnul3_Click()
sell=100
EndSub
PrivateSubMnu21_Click()
sell=''+,,,设置运算标记
EndSub
PrivateSubMnu22_Click()
sell='',,
EndSub
PrivateSubMnu23_Click()
s&2=
EndSub—*
PrivateSubCommandl_Click(),”命题”按钮单击事件
DimaAsLong,bAsLong
Ifsell=0Orsel2=MnThen
MsgBox”先选择运算数的位数和运算类型”
ExitSub
EndIf
a=sell+Int(9*sell*Rnd),随机生成指定位数的操作数
b=sell+Int(9*sell*Rnd)
Labell.Caption=Str(a)+sell+Str(b)+,组成算式
SelectCasesell,求运算结果H
Case
rl=a+b
Case”
rl=a-b
Case
rl=a*b
EndSelect
Text1.Text=
Textl.SetFocus
EndSub
PrivateSubCommand2_Click(),“答题”按钮单击事件
Dimr2AsLong
IfTextl.Text=nnThen
MsgBox”请输入答案”
ExitSub
EndIf
r2=Val(Textl.Text),读取用户的答案
Ifrl=r2Then,判断答案
LabeB.Caption=''正确''
Else
LabeB.Caption="错误”
EndIf
EndSub
PrivateSubMnu30_Click(),“退出”菜单命令
End
EndSub¥
10.5.4运行时改变菜单属性
1.使菜单命令有效或无效・
所有的菜单项都具有Enabled属性,当该属性为True(默认
值)时,有效;若为Fake时,菜单项会变暗,菜单命令无效。
举例:Mnu30.Enabled=False
[:hlIildl・
使用菜单项的Checked属性,可以设置复选标记。
举例:Mnu31.Checked=True
■
3.使菜单项不可见・[
举例:Mnu30.Visible=True平
10.5.5弹出式菜单
标右键。可以根据右
使用VB提供的菜单编辑器,把某个菜单设置成隐藏。
(1)使用菜单编辑器设计菜单
I
(2)设置顶层菜单项为不可见,即不选中菜单编辑器里的
“可见”选项或在属性窗口中设定Visible属性为False
I
出式菜单相关联的MouseUp(释放鼠标)事件过程。
[对象]PopupMenu菜单名[,位置常数][,横坐标L纵坐标]]]
171I5IuLL171IU・DU,J仝则J_,JU也私不干以刀IAJAL不
单
(1)打开例10.9的应用程序,选定窗体,然后在菜单编辑器中
将“位数”菜单标题的“可见”框中的“y”取消(即不选中)
(2)增加以下的MouseUp事件过程代码:
PrivateSubForm_MouseUp(ButtonAsInteger,_
ShiftAsInteger,XAsSingle,YAsSingle)!
___IfButton=2Then,检查是否右击,击左键为1
■
PopupMenumnulO^^H
End
EndSub
程序运行时,右击窗体空白处,即会弹出快捷菜单,如图
10.11所示
10.6工具栏和状态栏
分别通过ActiveX控件ToolBar和StatusBar来实现
■
10.6.1ActiveX控件简介
VB中使用的控件有三类:标准控件、ActiveX
控件和可插入对象(如Word文档、Excel工作表等,可当
作控件使用)
ActiveX控件是一段可重复使用的程序代码和数
据。由ActiveX技术创建的,可以作为VB工具箱的
扩充部分。
ActiveX控件以单独的文件存在(.ocx)
10.6.2工具栏(ToolBar)
工具栏为用户带来比用菜单更为快速的操作
为窗体添加工具栏,应使用工具条(ToolBar)控件
和图彳象控侔列表(ImageList)控件(不是标准控件,
创建工具栏的大致步骤^■
⑴添加ToolBar控件和
(2)用
(3)创建ToolBar控件,并将ToolBar控件与ImageList控件
相关喉,创建Button对象
(4)编写Button的Click事件过程。
单击工具栏控件时触发Click事件,单击工具栏上按钮时
触发ButtonClick事侔,笄返回一个Button参数(表明按下哪个
按钮)
例10.11使用工具栏
在例10.9的基础上,增加一个工具栏,使之能快
速提供“力口法”、“减法”和“乘法”运算类型
操作步骤:
(1)打开例10.9的应用程序
(2)按照上述创建ImageList的方法,在窗体上建立
ImageListl控件,并从Windows98系统文件夹中取出图片文件
Hlpcd.gif、Hipbell.gif和Hlpglobe.gif(本例采用这三个图片作为
按钮的图形
(3)在窗体上建立ToolBarl控件,使之与ImageListl相关联,
然后在控件中添加“加法”、“减法”和“乘法”三个按钮,
并分别取用ImageListl中的三个图片。
(4)在原有程序代码的基础上,增加以下的ButtonClick事件
过程代码¥
10.6.3状态栏
状态栏(StatusBar)通常位于窗体的底部,主要
用于显示应用程序的各种状态信息。StatusBar控件
属于ActiveX控件
StatusBar控件由若干个面板(Panel)组成,每一
个面板包含文本和图片。StatusBar控体最多能分成
16个Panel对象
★
例10.12使用状态栏
(1)打开例
(2)在窗体上创建StatusBarl^^^H
(3)右击StatusBarl控件,从快捷菜单中选择
“属性”命令,系统弹出“属性页”对话框
(4)单击“窗格”选项卡,屏幕显示如图10.16所
示
(5)设置第1个窗格(索弓I为1),“工具提示文本”
为“提示信息”,“样式”为"0-sbrText”(即显示
文本和位图),其显示内容在运行时由程序代码设置
(6)设置第2个窗格(索引为2),“工具提示文本”
为“大小写状态”,“样式”为为-sbrCaps”(即显
/l\寸牛
(7)设置第3个窗格(索引为3),其“工具提示文
本”为“时间”,“样式”为"5・sbrTime”(即按
系统格式显示时间)。
(8)要在运行中使第1个窗格显示“正在运行
中”,可在Form_Load()事件过程中加入如下代
StatusBar1.Panels.Item(l)=''正在运行中
运行程序
10.7键盘与鼠标事件
窗体和大多数控件都能响应键盘和鼠标事件
10.7.1键盘事件
有三种事件处理键盘操作,即KeyPress、KeyDown和
KeyUp事件
1.KeyPress事件
2.KeyDown事件:用户按下键盘上某个键时触发此事件
PrivateSubFormKeyDown(KeyCodeAsInteger,ShiftAsInteger)|
Print"按下键的代码是";KeyCode^,
EndSub^^H
参数KeyCode是一个按下键的代码(不区分大小写)
3.KeyUp事件:用户按下键盘上某个键后释
放时触发此事件。事件过程的语法格式类似于
KeyDown事件
KeyDown和KeyUp事件除了可以识别
KeyPress事件能识别的键,还可识别键盘上的
大多数键,如功能键、编辑键、定位键和数字
小键盘上的键
¥
一
10.7.2鼠标事件
包括:Click、DblClick>MouseMove>MouseDown和
MouseUp等事件
1.鼠标事件过程格式
一后三种鼠标事件与Click、DblClick事件不同的是可以区分
鼠标的左、右、中键与Shift、CtrLAlt键。
鼠标事件过程的语法格式为:
PrivateSub对象名鼠标事件(ButtonAsInteger,ShiftAs
Integer,
XAsSingle,YAsSingle)
说明:(1)Button参数表示哪个鼠标键被按下或释放。用0,1,2位分
别表示鼠标的左、右、中键,用1或0表示被按下或释放
210位
(2)Shift参数表示当鼠标键被按下或释婺时,Shift>CtrL
Alt键的按下或释放状态。用0、1、2位表示Shift、CtrLAlt
键
(3)X,Y表示鼠标指针的当前坐标位置
2.鼠标事件
⑴MouseDown和MouseUp^^^^H
当按下鼠标任意键时发生MouseDown事件,放开鼠标
键时发生MouseUp事件
PrivateSubFormMouseDown(ButtonAsInteger,
ShiftAsInteger,XAsSingle,YAsSingle)
Commandl.MoveX,Y*
EndSub¥
¥▼
(2)MouseMove事件
当移动鼠标时发生MouseMove事件。伴随鼠标指
针在对象上移动,该事件会连续不断地产生
(3)改变鼠标指针的形状
通过MousePointer和Mouselcon属性来设置鼠标指
针形状
对象的MousePointer属性用于设置鼠标指针的形状
示例:Text1.MousePointer=2x
10.7.3拖放操作
“拖放”(DragDrop)就是使用鼠标将对象从一个地方拖动
到另一个地方再放下控件拖放是指运行时将控件拖放到新的
位置
它可以分解为两种操作:一个是发生在源对象的“拖”
操作,另一个是发生在目标对象上的“放”操作
1.属性
(l)DragMode属性:用于设置拖放方式
为手动方式,通过代码来设定拖
(2)DragIcon属性:设置拖放操作时显示的图标,默认情况
下是将源对象的灰色轮廓作为拖动图标
2.事件
(l)DragDrop事件:当一个完整的拖放动作完成时触发。
它可用来控制在拖放操作完成时要进行的处理。其事件过程的
PrivateSub对象名_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Source表示正在被拖动的对象,X、Y表示鼠标指针在目
标对象中的坐标。
■
一(2)DragOver事件:当源对象被拖动到目标对象上,在目
标对象上就会触发DragOver事件。本事件先于DragDrop事件。
其事件过程的语法格式为:
■
PrivateSub对象名_DragOver(SourceAsControl,XAsSingle,_
YAsSingle,StateAsInteger)^H
State参数:0表示进入,即源对象正进入目标对象内;
1表示离开,即源对象正在离开目标对象;
2表示跨越,即源对象在目标范围内移动位置
3.方法
常用的有Drag方法。
对象名.Drag[动作]■
“动作”取值为0时,表示取消拖动操作;取值为1时,启
动拖动操作;取值为2时,结束拖动操作
例10.13采用自动方式,实现文本框的拖动操作
在窗体上建立一个文本框TextL其DragMode属性值设置
为1(自动方式),程序代码:
PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Source.MoveX,Y'移动对象位置
EndSub
例10.14采用手动方式,实现文本框的拖动操作
在窗体上建立一个文本框Textl,其DragMode属性值设置
为0(手动方式),程序代码:
PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Source.MoveX,Y'移动对象位置
EndSub
PrivateSubTextl_MouseDown(ButtonAsInteger,ShiftAsInteger,
XAsSingle,YAsSingle)
Text1.Drag1'启动“拖动”操作
EndSub
PrivateSubTextl_MouseUp(ButtonAsInteger,ShiftAsInteger,
XAsSingle,YAsSingle)
Text1.Drag2'结束“拖动”操作
EndSub
例10.15把文本框中的选定文本,拖放到图
片框内显示出来
(1)在窗体上建立一^个图片框(Picturel)和一^个文本框
(Text。文本框的Text属性为空
(2)编写程序代码
功能要求:程序运行后,用户在文本框内输入文本和用鼠
标选定(通过拖动)文本,然后按住鼠标左键后把文本框拖放到
图片框内,即可把已选定的文本显示在图片框内w
程序代码:
PrivateSubForm_Load()^^|
Textl.DragMode=0‘置手动方式■
EndSub^^H
PrivateSubPicturel_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Picturel.CurrentX=X'以鼠标位置为当前显示起始位置
Picturel.CurrentY=
Picturel.PrintTextl.SelText'在图片框中显示文本框中的选定内容
EndSub^^l
PrivateSubTextl_MouseMove(ButtonAsInteger,ShiftAsInteger,
XAsSingle,YAsSingle)
IfButton=1ThenButton为
'置自动方AS¥
Textl.DragMode=1
End
EndSub*
10.8对话框
对话框(DialogBox)是应用程序与用户进行交互的
主要途径。三种对话框:
⑴预定义对话框(使用函数InputBox和MsgBox来实
现)■
(2)通用对话框■
(3)用户自定义对话框
10.8.1通用对话框
通用对话框是一种ActiveX控件,利用它能够很容易地创
建下列六种标准对话框:打开(Open),另存为(SaveAs),颜色
(Color),字体(Font),打印机(Printer)和帮助(Help)对话框
1.添加通用对话框控件
在使用之前,应选择“工程”菜单中的“部件”命令先将
其添加到工具箱中
当程序运行时,通用对话框是不可见的
通用对话框不仅本身具有一组属性,而且由它产生的各种标
准对话框也拥有许多特定属性。
属性设置可以在属性窗口或程序代码中进行,也可以通过
“属性页”对话框来设置
2.属性页
3.通用对话框的基本属性和方法
(2)Action属性:该属性直接决定打开哪种对话框
对话框类型Action属性值
无对话框0
打开”对话框ShowOpen
“另存为”对话框2ShowSaveB
“颜色”对话框3ShowColorJ
“字体”对话框4ShowFontH
“打印”对话框5ShowPrinterl
“帮助”对话框6ShowHelp
例如,利用通用对话框CommonDialogl产生一个“打开”
话框,可以执行下列语句:
CommonDialogl.Action=l^^|
或CommonDialogl.ShowOpen*
(3)DialogTitle属性:该属性用于设置对话框的标题
(4)ConcelEiror属性:该属性表示用户在使用对话框进行对话
时,单击“取消”按钮是否产生错误信息
(5)通用对话框的方法
4.“打开”对话框
在程序中将通用对话框的Action属性设置为1,或用
ShowOpen方法打开,则弹出“打开文件”对话框
“打开”对话框的属性:
FileName>FileTitle>Filter>Filterindex>IniDir
■¥
¥求
例10.16建立一个“打开文件”的对话框
在窗体上添加一个通用对话框和一个“打开”命令按钮,
当单击“打开”按钮时,就会弹出一个“打开文件”的对话
框
♦.*'i.J
打开•"IBOiI
」■■■
|打开文件EIE3
搜寻(X):卜今我的文档3国囱宣面国
]Izrweb
1WvDownloads口
KIMvPictures
2jMyWebs勒
^1mvdir回'
文件名®:打开9|
文件类型(X)取消
⑴把CommonDialog控件添加到工具箱中。然后在窗体上添
加CommonDialog控件,其默认名称为CommonDialoglH
(2)在窗体上添加一个命令按钮CommandL其Caption属性为
(3)“打开”命令按钮Commandl的
PrivateSubCommandl_Click()
CommonDialog1.DialogTitle=”打开文件“'设置文件过滤器
CommonDialogl.Filter="全部文件文本文件
CommonDialog1.InitDir=nC:\mydocuments”,设置默认文件夹
CommonDialogl.ShowOpen,显示“打开”对话框
EndSub
其中,设置文件过滤器(Filter)属性的参数格式如下:
描述符1I过滤符1I描述符2I过滤符
程序运行后,单击“打开”按钮即弹出如图所示的对话框
从控件的FileName属性中获取选定的路径及文件名
5■■■♦・
6.“颜色”对话框
7.“字体”对话框
例10.17“字体”对话框应用示例
在文本框中输入一段文字,单击命令按钮后,通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论