VB初学者实例50例.docx
- 文档编号:5545800
- 上传时间:2022-12-19
- 格式:DOCX
- 页数:81
- 大小:436.21KB
VB初学者实例50例.docx
《VB初学者实例50例.docx》由会员分享,可在线阅读,更多相关《VB初学者实例50例.docx(81页珍藏版)》请在冰豆网上搜索。
VB初学者实例50例
第四代计算机语言,VB的特点是显而易见的。
因为是“可视的”所以我们不妨先看看VB的界面(我用的是VB4.032位版),很容易可以看到,屏幕上有五个窗口,
(1)是菜单栏;
(2)是工具箱(ToolsBox),里面是VB所需的控件;(3)是VB程序要设计的窗体(Form);(4)控件及窗体的属性(Properties),在VB中每一个控件都有其自己的属性,比如文本框有Text属性,而任何一个控件都有一个自己唯一的名字,这使得我们无需编程就可以完成部分编程的工作;(5)是VB的文件控制窗口,VB的每一个程序称为一个项目(Project),一个项目文件里往往包括以下两种文件,窗体(Form)文件和模块(Bas)文件,当然还有Class文件,这些文件组成一个完整的程序,而项目文件(Vbp)则用来描述程序所包含的内容。
实际上,我一直认为学习的最好方法就是实际操作一下,好,下面我们就来看一个最简单的程序,和所有的编程教科书一样,我们把第一个程序称为“Hello,world!
”。
首先,我们先来熟悉一下窗体。
如果你用过Win95附件所带的画图板的话,那么你一定会很快熟悉VB的窗体设计方法,用鼠标单击一下工具箱中的任何一个控件,然后在窗体上任意拖动鼠标,你就会得到一个所需的控件;当然还有其他的方法得到控件,你可以在工具箱上双击得到一个控件;或是按住Ctrl键,再单击所需控件,重复第一次的步骤,你会发现,不用再回去点击工具箱了,点右键可以恢复鼠标指针,这样对于重复画同一个控件尤其有用。
对于我们的第一个小程序,知道这些就已经足够了。
现在你可以在我们的窗体上画如下控件一个图片框(PictureBox)
,用来显示图画,每一个控件建立的时候,系统都会给它设一个默认的名字(Name),这个PictureBox的名字就叫做Picture1,为了方便起见,我们以后的控件都使用缺省的名称。
选定Picture1,在左边的属性窗口中找到Picture属性,单击会出现
,点击
为Picture1选一个图像文件,VB支持的图像文件有BitMap、WMF、ICO三种,微软为用户提供了一套图标文件,存放在VB目录的Icons目录下,选择Icons\misc\face01.ico文件,这样图标就被装入了Picture1。
再选择Pictrue1的Autosize属性,设为1-True,则会发现Picture1以变成和图像一样大了;把BorderStyle定为0-None,去掉图片边框。
用同样的方法再添加两个图片框:
Picture2(Picture:
face02.ico),Picture3(Picture:
face03.ico)。
图片框完成了,第二步,建立三个无线钮(OptionButton)
,由于它象收音机的无线电按钮而得名),把它们的标签名属性(Caption)分别定为“悲哀”,“高兴”,“没治了”,放置成下图的样子。
最后我们还需要三个文本框(TextBox)
,分别把它们的Text属性设为””(空字符串),程序的最后界面如图1_3,这样按下菜单窗口的运行按钮,运行一下程序,还可以吧,不过现在程序还无法工作,就算是VB也不能免俗,还必须输入代码才能使程序运作。
VB是一门典型的面向对象编程的语言,它的整个程序都是由事件驱动的。
那么,什么是事件呢?
其实,我们的生活中充满了各式各样的事件,比如说“闯红灯”这个事件的发生会导致被警察追杀、走路撞到电线杆时会痛。
上面的例子虽然有些滑稽,但它可以清楚的解释事件的含义,就象你马上就能体会到的在什么地方单击鼠标时会发生什么,按下键盘时会发生什么,这就是事件,而事件就是这么容易。
要进入VB的代码设计区,只需在需要的控件或窗体上双击鼠标即可得到这样的窗口。
如图1_4,每一个VB程序都由若干小程序组成,这使得用VB编程更加容易,这些小程序,分为“过程”(Procedure)和“函数”(Function),二者都可以传递参数,所不同的是函数有一个返回值,而过程没有,仅此而已。
双击窗体的任何一个部分,将出现一个空的过程:
“Form_Load()”,这是一个非常重要的过程,它所驱动的事件就是该窗体被加载的事件,打个比方,就象计算机启动时的批处理程序(Autoexec.bat)。
这个程序里我们要对控件进行一些设置。
我们刚才也曾对控件进行设置,但那是在程序设置中进行的,有时我们也需要在程序中改变某些控件的属性,通过程序代码。
VB中规定,一个控件属性的访问方法:
名称.属性,于是我们对本程序的控件进行如下设置:
PrivateSubForm_Load()
Picture1.Visible=False
Picture2.Visible=False
Picture3.Visible=False
Text1.Visible=False
Text2.Visible=False
Text3.Visible=False
EndSub
Private表示此过程是局部的,Sub表示子过程的开始,与之相对的是EndSub表示过程的结束,Visible属性表示控件的可见性,这个属性的值有两个True和False。
注意:
VB里对大小写是不加区分的,而且,已定义的名称,以后再用到时,系统会自动把它变成相应的大写或小写。
小知识:
1.VB里的对变量及常量的规矩。
变量一般为Abc的格式,常量为ABC,另外这些变量和常量名不得同VB内的关键字相同,也不可以使用一些特殊符号,这些我们将在以后介绍,注意在学习中养成好习惯,使程序便于自己和别人的浏览。
2.程序书写的窍门:
不要真的一句一句把程序打完,利用快捷键:
拷贝Ctrl+C,剪切Ctrl+T,粘贴Ctrl+P。
按下F5,运行一下程序,现在发现只剩下无线钮了。
如图。
PrivateSubForm_Load()
Picture1.Visible=False
Picture2.Visible=False
Picture3.Visible=False
Text1.Visible=False
Text2.Visible=False
Text3.Visible=False
Option4.Left=-2000
Option4.Value=True
EndSub
Left属性表示控件离窗体左边框的距离,设置为-2000,则在窗体内不会看到这个控件,并使之Value=True。
再运行程序,一切如愿,如图.
注意:
为什么不用Option4.Visible=False?
因为,一旦设置无线钮为不可见,那么再使它的Value为真是没有意义的,不信自己试试。
下面我们可以继续进行了。
在刚才的代码窗口里,将Object选择为Option1,Proc选择为Click,即得到一个Option1_Click的过程。
代码如下:
PrivateSubOption1_Click()
Picture1.Visible=True
Picture2.Visible=False
Picture3.Visible=False
Text1.Visible=True
Text2.Visible=False
Text3.Visible=False
Text1.Text="再见,残酷的世界。
"
EndSub
相同的建立Option2_Click和Option2_Click:
PrivateSubOption2_Click()
Picture2.Visible=True
Picture1.Visible=False
Picture3.Visible=False
Text2.Visible=True
Text1.Visible=False
Text3.Visible=False
Text2.Text="今天心情不错。
"
EndSub
PrivateSubOption3_Click()
Picture3.Visible=True
Picture2.Visible=False
Picture1.Visible=False
Text3.Visible=True
Text2.Visible=False
Text1.Visible=False
Text3.Text="Hello,World。
"
EndSub
好,我们的开山之作完成了!
按下F5,玩一下吧。
这个程序虽然简单,但也用到了许多基本知识,你开始感兴趣了吗?
^_^
1.打印三角形
PrivateSubForm_Click()
Fori=1To4
PrintSpace(4-i);
Forj=1Toi
Print"*";
Nextj
Nexti
EndSub
2.题目:
(事件)单击窗体。
(响应)我国现有人口为13亿,设年增长率为1%,计算多少年后增加到20亿。
并将结果输出在窗体上。
将结果存入变量year中。
使用dowhile...loop语句完成程序。
PrivateSubForm_Click()
DimyearAsInteger,sumAsSingle
Dimpasdouble
Dimrassingle
P=1300000000
r=0.01
Dowhilep<2000000000
P=p+p*r
n=n+1
Loop
Print“n=”,n
Year=n
Endsub
3.题目:
(事件)单击窗体。
(响应)求从100到1000之间所有是3的倍数的数之和,当和大于3000时,停止计算并输出和。
请将结果输出到窗体上,并存入所给变量SUM中。
使用for...next语句完成程序。
PrivateSubForm_Click()
DimsumAsInteger
sum=0
DimiAsInteger
Fori=100To1000
IfiMod3=0Then
sum=sum+i
Ifsum>3000ThenExitFor
EndIf
Nexti
Printsum
EndSub
4.题目(事件)点击窗体(响应)求1!
+2!
+3!
+…………………+10!
的值,并在窗体上输出,结果存入变量L中
PrivateSubform_click()
DimlAsLong
DimpAsLong
p=1
Fori=1To10
p=p*i
l=l+p
Next
Printl
EndSub
5.题目点击窗体求100以内偶数的和,并将结果输出在窗体上,将结果存入变量sum中
Privatesubform_click()
Dimsumasinteger
fori=0to100
IFimod2=0then
Sum=sum+i
endif
Next
Printsum
Endsub
6.题目:
单击窗体求1+2+3+4+5+…………+100的值并将结果输入在窗体上,结果存入变量sum中Privatesubform–click()
Dimsumasinteger
Fori=1to100
Sum=sum+i
Next
Printsum
Endsub
7.题目单击窗体求1+5+10+15+……………..+500的和,并将结果输出在窗体上,将结果存入变量sum中Privatesubform-click()
Dimsumaslong
Sum=1
Fori=0to500
IFiMod5=0then
Sum=sum+i
EndIf
Next
Printsum
Endsub
#8.题目:
求两个正整数m,n的最大公约数p和最小公倍数q
'注意:
请在指定的事件内编写代码。
DimmAsInteger,nAsInteger
PrivateSubCommand1_Click()
m=Val(InputBox("输入正整数"))
n=Val(InputBox("输入正整数"))
Ifn*m=0Then
MsgBox"两数任何一个数都不能为0!
"
EndIf
EndSub
PrivateSubCommand2_Click()
DimrAsInteger,sAsInteger
r=m:
s=1
DoUntilmModr=0AndnModr=0'最大公约数
r=r-1
Loop
DoUntilsModm=0AndsModn=0'最小公倍数
s=s+1
Loop
Print"最大公约数是:
"&r&"最小公倍数是:
"&s
EndSub
9.题目:
(事件)单击窗体。
(响应)求10~20之间所有素数的乘积并输出在窗体上。
将结果存入变量L中
DimlAsLong
l=1
Fori=10To20
Forj=2Toi-1
IfiModj=0Then
ExitFor
EndIf
Nextj
Ifj=iThen
l=l*i
EndIf
Nexti
Printl
10.题目:
编写函数fun其功能是:
判断一个整数w的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0
PrivateFunctionfun(wAsInteger)AsBoolean
Dimkasinteger,sasinteger
Do
S=s+(wmod10)*(wmod10)
W=Int(w/10)
Loopwhilew<>0
Ifsmod5=0then
K=1
ElseK=0
Endif
Fun=k
EndFunction
11.题目:
编写函数fun,函数的功能是:
根据一个百分制成绩mark(整数),显示对应五级制的评定。
条件如下:
mark大于等于90显示"优秀"'mark小于90且大于等于80显示"良好"'mark小于80且大于等于70显示"中等"'mark小于70且大于等于60显示"及格"'mark小于60显示"不及格"'要求使用IF语句来实现。
'注意:
请在指定的事件内编写代码'代码只能写在两行标识之间'不得修改已有代码'保存时不得修改窗体和工程文件的名称及路径,否则后果自负。
PrivateFunctionfun(markAsInteger)AsString
ifmark>=90then
fun="优秀"
Else
ifmark>=80then
fun="良好"
else
ifmark>=70then
fun="中等"
else
ifmark>=60then
fun="及格"
else
fun="不及格"
endif
EndFunction
12.题目:
(事件)双击窗体。
(响应)求出100~200之间,能被5整除,但不能被3整除的数。
并求所有数之和,存入变量中SUM中。
PrivateSubForm_dblClick()
DimsumAsInteger
sum=0
Dimiasinteger
Fori=100to200
If((imod5)=0)and((imod3)<>0)then
Print(CStr(i))
sum=sum+i
Endif
Next
Printsum
Testfunc(sum)
Endsub
1.如何消除textbox中按下回车时的beep声音?
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
KeyAscii=0
EndIf
EndSub
2.Textbox获得焦点时自动选中。
PrivateSubText1_GotFocus()
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text)
EndSub
3.屏蔽textbox控件自身的右键菜单,并显示自己的菜单。
方法一:
PrivateSubText1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,Y_
AsSingle)
IfButton=2Then
Text1.Enabled=False
Text1.Enabled=True
PopupMenumymenu
EndIf
EndSub
方法二:
回调函数
module:
OptionExplicit
PublicOldWindowProcAsLong'保存默认的窗口函数的地址
PublicConstWM_CONTEXTMENU=&H7B'当右击文本框时,产生这条消息
PublicDeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByValhWnd_AsLong,ByValnIndexAsLong)AsLong
PublicDeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"(ByValhWnd_AsLong,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong
PrivateDeclareFunctionCallWindowProcLib"user32"Alias"CallWindowProcA"(ByVal_lpPrevWndFuncAsLong,ByValhWndAsLong,ByValMsgAsLong,ByValwParamAsLong,ByVallParamAsLong)AsLong
PublicFunctionSubClass_WndMessage(ByValhWndAsLong,ByValMsgAsLong,ByValwp_
AsLong,ByVallpAsLong)AsLong
'如果消息不是WM_CONTEXTMENU,就调用默认的窗口函数处理
IfMsg<>WM_CONTEXTMENUThen
SubClass_WndMessage=CallWindowProc(OldWindowProc,hWnd,Msg,wp,lp)
ExitFunction
EndIf
SubClass_WndMessage=True
EndFunction
窗体中:
PrivateConstGWL_WNDPROC=(-4)
PrivateSubText1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,Y_
AsSingle)
IfButton=1ThenExitSub
OldWindowProc=GetWindowLong(Text1.hWnd,GWL_WNDPROC)'取得窗口函数的地址
'用SubClass_WndMessage代替窗口函数处理消息
CallSetWindowLong(Text1.hWnd,GWL_WNDPROC,AddressOfSubClass_WndMessage)
EndSub
PrivateSubText1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=1ThenExitSub
'恢复窗口的默认函数
CallSetWindowLong(Text1.hWnd,GWL_WNDPROC,OldWindowProc)
PopupMenumymenu
EndSub
4.设置TEXTBOX为只读属性
PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwnd_
AsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
PrivateDeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByValhwnd_AsLong,ByValnIndexAsLong)AsLong
PrivateConstGWL_STYLE=(-16)
PrivateConstEM_SETREADONLY=&HCF
PrivateSubCommand1_Click()
DimlAsLong
If(GetWindowLong(Text1.hwnd,GWL_STYLE)And&H800)Then
Text1.Text="Thisisaread/writetextbox." '文本窗口是只读窗口,设置为可读写窗口
l=SendMessage(Text1.hwnd,EM_SETREADONLY,False,vbNull)
Text1.BackColor=RGB(255,255,255) '将背景设置为白色
Command1.Caption="Read&Write"
Else
Text1.Text="Thisisareadonlytextbox." '文本窗口是可读写窗口,设置为只读窗口
l=SendMessage(Text1.hwnd,EM_SETREADONLY,True,vbNull)
Text1.BackColor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 初学者 实例 50