VB初学者实例50例.docx

上传人:b****6 文档编号:5545800 上传时间:2022-12-19 格式:DOCX 页数:81 大小:436.21KB
下载 相关 举报
VB初学者实例50例.docx_第1页
第1页 / 共81页
VB初学者实例50例.docx_第2页
第2页 / 共81页
VB初学者实例50例.docx_第3页
第3页 / 共81页
VB初学者实例50例.docx_第4页
第4页 / 共81页
VB初学者实例50例.docx_第5页
第5页 / 共81页
点击查看更多>>
下载资源
资源描述

VB初学者实例50例.docx

《VB初学者实例50例.docx》由会员分享,可在线阅读,更多相关《VB初学者实例50例.docx(81页珍藏版)》请在冰豆网上搜索。

VB初学者实例50例.docx

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

Print

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1