程序时该错误就会被编译器捕获。此时必须查找并改正该错误,然后再次进行编译,对每一个发现的错误都要重复这样的过程。VB在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误。看起来就像一位专家在监视代码的输入。
除即时捕获错误以外,VB也在输入代码时部分地编译该代码。当准备运行和测试应用程序时,只需极短时间即可完成编译。如果编译器发现了错误、则将错误突出显示于代码中。这时可以更正错误并继续编译、而不需从头开始。
由于VB的交互特性,因此在开发应用程序时,系统频繁地运行着应用程序。通过这种方式,代码运行的效果可以在开发时进行测试,而不必等到编译完成以后。
第二章用VB开发多功能日历程序
一、本程序运行界面简介
编程的主导思想是:先把公、农历的数据用数组查询设置好,再通过算法转换成具体应用。程序的运行界面见图1,
图1
程序应用了不规则窗体技术,使得窗体比较美观。单击属相标志可以退出程序。单击时钟数字将返回到今天。单击计算器面板开关将向下拉出计算器面板,单击查询控制面板开关将向下拉出查询控制面板,见图2。
图2
二、本程序部分控件的设置
三、主程序部分代码:
OptionExplicit
'***************************************
'拖动无标题窗体
ConstHTCAPTION=2
ConstWM_NCLBUTTONDOWN=&HA1
PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLong
PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsLong)AsLong
'=============================================================================
PrivateDeclareFunctionGetObjectAPILib"gdi32"Alias"GetObjectA"(ByValhObjectAsLong,ByValnCountAsLong,lpObjectAsAny)AsLong
PrivateDeclareFunctionDeleteObjectLib"gdi32"(ByValhObjectAsLong)AsLong
PrivateDeclareFunctionSetWindowRgnLib"user32"(ByValhwndAsLong,ByValhRgnAsLong,ByValbRedrawAsBoolean)AsLong
PrivateDeclareFunctionCreateRectRgnLib"gdi32"(ByValX1AsLong,ByValY1AsLong,ByValX2AsLong,ByValY2AsLong)AsLong
PrivateDeclareFunctionCombineRgnLib"gdi32"(ByValhDestRgnAsLong,ByValhSrcRgn1AsLong,ByValhSrcRgn2AsLong,ByValnCombineModeAsLong)AsLong
PrivateDeclareFunctionGetBitmapBitsLib"gdi32"(ByValhBitmapAsLong,ByValdwCountAsLong,lpBitsAsAny)AsLong
PrivateTypeBITMAP
bmTypeAsLong
bmWidthAsLong
bmHeightAsLong
bmWidthBytesAsLong
bmPlanesAsInteger
bmBitsPixelAsInteger
bmBitsAsLong
EndType
PrivateConstRGN_OR=2
DimbmByte()AsByte
'***************************************
'滚动字幕
PrivateDeclareFunctionDrawTextLib"user32"Alias"DrawTextA"(ByValhdcAsLong,ByVallpStrAsString,ByValnCountAsLong,lpRectAsRECT,ByValwFormatAsLong)AsLong
PrivateDeclareFunctionGetTickCountLib"kernel32"()AsLong
ConstDT_BOTTOMAsLong=&H8
ConstDT_CALCRECTAsLong=&H400
ConstDT_CENTERAsLong=&H1
ConstDT_EXPANDTABSAsLong=&H40
ConstDT_EXTERNALLEADINGAsLong=&H200
ConstDT_LEFTAsLong=&H0
ConstDT_NOCLIPAsLong=&H100
ConstDT_NOPREFIXAsLong=&H800
ConstDT_RIGHTAsLong=&H2
ConstDT_SINGLELINEAsLong=&H20
ConstDT_TABSTOPAsLong=&H80
ConstDT_TOPAsLong=&H0
ConstDT_VCENTERAsLong=&H4
ConstDT_WORDBREAKAsLong=&H10
PrivateTypeRECT
LeftAsLong
TopAsLong
RightAsLong
BottomAsLong
EndType
ConstScrollTextAsString="1901-2049"&vbCrLf&_
"多功能电子日历"
'***********************************************
DimEndingFlagAsBoolean,jSAsInteger
DimeAsString
DimfAsString
DimgAsDouble
DimS_memAsDouble
DimopAsString
DimchkAsInteger
ConstPi=3.14
PrivateConstSWP_NOMOVE=2
PrivateConstSWP_NOSIZE=1
PrivateConstFLAGS=SWP_NOMOVEOrSWP_NOSIZE
PrivateConstHWND_TOPMOST=-1
PrivateConstHWND_NOTOPMOST=-2
DimflAgeAsBoolean,color_indexAsInteger,tiAoAsBoolean,jiSuanAsBoolean
Dims_mem_BAsBoolean,tipAsInteger,ziShiAsString
'**************************************************
'数字按下、松开
PrivateSubcmdNum_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
Show_bPicture5,P8,cmdNum(Index)
EndSub
PrivateSubcmdNum_MouseUp(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
Show_bPicture5,P9,cmdNum(Index)
EndSub
'**************************************************
'角度、弧度
PrivateSubcmdOp_1_Click(IndexAsInteger)
MPl.Play
SelectCaseIndex
Case0
Ifg=1Then
Ifop=""Then
e=Str((Val(e)*180/Pi))
txtDisp.Text=e
Else
f=Str((Val(e)*180/Pi))
txtDisp.Text=f
EndIf
chk=1
g=Pi/180
EndIf
ShowNumARGPt,wPw1(3),19
Case1
Ifg<>1Then
Ifop=""Then
e=Str((Val(e)*Pi/180))
txtDisp.Text=e
Else
f=Str((Val(e)*Pi/180))
txtDisp.Text=f
EndIf
chk=1
g=1
EndIf
ShowNumARGPt,wPw1(3),20
Case2
'g=1
ShowNumARGPt,wPw1(3),21
EndSelect
EndSub
PrivateSubcmdOp_1_MouseUp(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
Show_bPicture5,P9,cmdOp_1(Index)
EndSub
PrivateSubcmdOp_1_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
Show_bPicture5,P8,cmdOp_1(Index)
EndSub
'**************************************************
'单一功能键按下、松开
PrivateSubcmdops_MouseDown(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
Show_bPicture5,P8,cmdOps(Index)
EndSub
PrivateSubcmdops_MouseUp(IndexAsInteger,ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
Show_bPicture5,P9,cmdOps(Index)
EndSub
'**************************************************
'单一功能键按下、松开
PrivateSubcmdOps_Click(IndexAsInteger)
DimsumAsDouble,iAsInteger
GoToeh1
MPl.Play
SelectCaseIndex
Case0
e=Str(Sqr(Val(e)))
ShowNumFunPt,wPw1(3),10
Ji_suan
Case1
Ife<>0Then
e=-Val(txtDisp)
Else
e=0
EndIf
Ji_suan
Case2
e=Str(Sin(Val(e)*g))
ShowNumFunPt,wPw1(3),Index-1
Ji_suan
Case3
e=Str(Cos(Val(e)*g))
ShowNumFunPt,wPw1(3),Index-1
Ji_suan
Case4
e=Str(Tan(Val(e)*g))
ShowNumFunPt,wPw1(3),Index-1
Ji_suan
Case5
e=Str(Atn(Val(e)))
ShowNumFunPt,wPw1(3),Index-1
Ji_suan
Case6
e=Str(1/Sin(Val(e)*g))
ShowNumFunPt,wPw1(3),Index-1
Ji_suan
Case7
e=Str(1/Cos(Val(e)*g))
ShowNumFunPt,wPw1(3),Index-1
Ji_suan
Case8
e=Str(Exp(Val(e)))
ShowNumFunPt,wPw1(3),Index-1
Ji_suan
Case9
e=Str(Log(Val(e)))
ShowNumFunPt,wPw1(3),Index-1
Ji_suan
Case10
Randomize
Ifop=""Then
e=Str(99999999
上一篇:
vb公交车查询系统vb+access源代码+可执行程序+论文+开题报告+外文翻译+答辩ppt(论文和程序)
下一篇:
气相色谱法测定蔬菜中有机磷农药的残留量