📄 050204.htm
字号:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>vb study</title>
<style>
<!--
td {font-size: 9pt}
A:link {text-decoration: none; color: #0033cc;font-size: 9pt}
A:visited {text-decoration: none; color: #0066CC;font-size: 9pt}
A:active {text-decoration: none; color: #ff0000; font-size: 9pt}
A:hover {text-decoration: underline; color: #000000;font-size: 9pt}
-->
</style>
</head>
<body>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="98%">
<tr>
<td width="100%"><a href="#">你的位置</a>:<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="#">VB学习</a>--<a href="#">代码</a></td>
</tr>
<tr>
<td width="100%">
<p align="center">代码</td>
</tr>
<tr>
<td width="100%"><br>
在标准模块中不能编写某个窗体中的对象的事件过程,事件过程只能在窗体模块中编写。<br>
VB代码窗口中的书签:书签可用来标记代码中的某些行,以便以后可以很容易地返回这些行,书签的切换或定位可在"编辑"菜单"书签"项中进行。<br>
VB代码一行一般写一条语句,也可一行写多条语句,每条语句间用冒号:隔开即可<br>
VB一条长语句可以分成几行来写,在需要分行的地方用"空格+下划线(_)"即可。<br>
在VB中我们一般用十进制数,但有时用十六进制数或八进制数更方便,怎样表示16进制数呢:用前缀&H,怎样表示八进制数呢,用前缀&O(&号和大写字母O或数字0),如:<br>
255=&o377=&hFF<br>
我们可看到用16进制数表示的控件颜色值如:label1.backcolor=&HFF0000(蓝色),通常情况下,颜色值由六位数组成,颜色值=&Hbbggrr。前两位数表示蓝色成分,中间两位表示绿色成分,后面两位表示红色成分,范围从16进制数的0-FF。<br>
在多个模块中有同名的公用变量(用public声明的)时,引用时应分别指出它的出处,形如:module1.lxn或module2.lxn或form1.lxn等。如果有同名的公用过程或公用函数等也是如此,引用时指明出处。<br>
变体类型数据的三个特殊值:EMPTY,NULL,ERROR。<br>
当一个变体变量未赋值时,其"值"就等于Empty.它不等于0或空字符串"",当给一个变量赋值后(如 lxn=0),其empty值就消失,可重新赋予empty值,如:lxn=empty<br>
可用IsEmpty函数检测是否为empty值:if IsEmpty(lxn)=true then lxn=0<br>
给一个变体变量赋予NULL值:常用于数据库程序中表示未知数据或丢失的数据,null的传播性:假如有一个变量值为NULL,将它放入一个表达式中,整个表达式值将变为NULL,将它作为参数传入函数中,函数将返回NULL,NULL能通过表达式"传播",当然前提是有"变体"变量(为传播载体)的基础上。用IsNull函数检测是否为NULL值,<br>
如: if IsNull(lxn)=false then lxn=Null<br>
变体变量的ERROR值,指出已发生的过程中的错误状态。不是指程序错误(我没看懂)<br>
在动态数组的使用中,用redim确定了数组的最大下标,如果还要改动这个值,而程序中若重复执行ReDim语句时,当前存储在数组中的值都会全部丢失, VB重新将所有数组元素初始化,运行中怎样改变数组的大小而又不丢失数据呢?用ReDim Preserve关健字,但要注意,运行中只能改变数组最后一维的大小,可先用UBound函数取得数组未维最大下标,再进行加或减,如:ReDim Preserve lxn(UBound(lxn)+1),增加一个元素。多维数组如:<br>
Redim Preserve lxn(10,UBound(lxn,2)+1)第2维增加1个元素。UBound(lxn,2)返回数组lxn的第2维长度。<br>
在DO…LOOP循环的中途退出用Exit Do语句。<br>
在函数过程的中途退出用Exit Function语句。<br>
重点笔记:对象的引用<br>
在VB中很重要的一部分内容是对其他应用程序所包含的对象的引用,如运行WORD的某些功能,EXCEL的某些功能等等,可以大大丰富程序的实用性,并使程序简单化。<br>
这样理解:如Word这个大"程序"也是由许许多多的小"控件"单位做成的,我们在自己的程序中也可随意使用这些本属于Word的"控件"对象,只要把Word的对象库包含进来即可。要引用对象,1,"工程"菜单"引用"项,在出现的对话框中选中某个程序对象库的复选框,(如Microsoft Excel 9.0 Object Library,是Excel的对象库),2,如果不熟悉该对象库的语法及有关知识,可去"视图"菜单"对象浏览器"中看一看。3,在本程序代码中创建该对象库中某个对象实例,步骤是:<br>
1,声明1个对象变量:如Dim x as object<br>
2,用Set语句和CreateObject函数创建对象,格式为:<br>
Set 对象变量=CreateObject("对象库中某对象") 引号不能丢。"对象库中某对象"都列出在对象浏览器中左边"类"框里面。<br>
Set x = CreateObject("Excel.Application")<br>
上例x就成了Excel库中1个Application对象的实例。<br>
也有另一种简便法,就是直接用"set 对象变量=new 对象库中某对象",和创建一般form或类模块对象一样,甚至可只用一句话"Dim 变量 as new 对象库中对象名",如 dim x as new excel.application.<br>
3,这时就可以进行引用了,在引用完后,要及时退出以释放内存。用Quit和给对象变量赋nothing值的办法。<br>
例下:<br>
Private Sub Command1_Click()<br>
Dim x As Object 声明对象变量<br>
Dim lxn<br>
If Text1.Text <> "" And Text2.Text <> "" And Text3.Text <> "" Then<br>
Set x = CreateObject("Excel.Sheet") 创建对象<br>
lxn = x.Application.WorksheetFunction.Pmt _ 引用对象中的Pmt函数<br>
(Text1.Text / 12, Text2.Text, Text3.Text)<br>
MsgBox CCur(Abs(lxn)), , a<br>
x.Application.Quit<br>
Set x = Nothing<br>
End If<br>
End Sub<br>
对象变量的作用是在程序中用来引用对象,在声明对象变量时,可把对象变量声明为特定对象类(即只含1种对象类型,如声明为按纽类Dim lxn as commandbutton),也可把对象变量声明为一般对象类(即含多种类型,如Dim lxn as object),声明为object使lxn可引用任何类型对象,象这种一般对象类有以下几个:<br>
Form 可引用程序中的任何窗体;<br>
Control 可引用程序中的任何控件;<br>
object 可引用任何对象。<br>
在代码中怎样动态地创建对象:我们以前创建对象都是在设计时通过"工具箱"画到窗体上去,而在代码中也可以创建,运行时只要经过这段代码时就可创建了,这叫动态创建:首先,要确定动态创建的对象类型,如按纽文本框等等;其次,在现有窗体上建立一个样本,将其index属性设为0(其实就是控件数组),--动态创建的对象将照搬这个样本;第三,在代码中用"load 新对象"加载,并设"新对象.visible=true"就可以了。至于"新对象"的代码名称,就是样本名加上新的数组下标,如样本为text1(0),则新对象可以为text1(1)。第四,在代码中对新对象作必要的属性方法事件改动。<br>
注:动态创建的对象会包括样本设计时的一切属性方法事件,而对样本自身在运行过程中的改变则不会照搬。<br>
以上是创建一般的对象,还有:窗体form对象及类模块中对象(还有对象库中对象)的创建如下:<br>
用NEW关健字及Set语句:格式:<br>
Dim 变量 as 现有窗体名(或类模块名、或对象库中某对象)<br>
Dim lxn as form1<br>
Set 变量=New 现有窗体名(或类模块,对象库中对象名)<br>
Set lxn=new form1<br>
也可以简单用 "Dim 变量 as new 现有窗体名"的方式。<br>
新建窗体后要用 窗体变量.show来显示新窗体。注:new能动态创建窗体对象和类模块对象,以及对象库中对象。
<p>补充两个逻辑运算符:EQV:两边表达式同真同假,结果为真,两边表达式一真一假,结果为假(是XOR的逆运算)<br>
IMP:第1个表达式为真第2个表达式为假时结果为假,其余都为真。<br>
循环结构的一个补充(较重要):For Each 元素变量 in 数组或集合<br>
循环体<br>
next 元素变量<br>
这种结构提供遍历数组或集合中每个元素的方法(不用知道其中有多少个元素)。元素可用变量表示,如:<br>
For Each lxn in Form1.Controls<br>
lxn.left=lxn.Left+50<br>
Next lxn<br>
在代码中创建对象:以前用数组的方法来动态创建对象,实际可不用数组,直接在代码中创建,步骤:1。在(通用)中用WithEvents关健字声明1个对象变量,格式:<br>
Private WithEvents 新对象名 as 控件类<br>
private withevents text1 as textbox<br>
WithEvents的作用是可在代码窗口对新创建对象编写事件过程。声明后,你可以在代码窗口的对象下拉框中找到这个对象变量。<br>
2,在事件过程中用<br>
Set 新对象=Controls.Add("vb.控件类","控件类")<br>
set text1=controls.add("vb.textbox","textbox")<br>
3,全面设置新对象的属性:由于要全部设置,所以会较多(不象直接画到窗体上那样有"缺省属性"),建议用with结构来进行。<br>
例下:<br>
Private WithEvents command1 As CommandButton '代码中创建对象</p>
<p>Private Sub Form_Load()<br>
Set command1 = Controls.Add("vb.commandbutton", "button") '这句是关健,用<br>
With command1 button也行。<br>
.Caption = "退出"<br>
.Visible = True<br>
.Left = 1000<br>
.Top = 1000<br>
.Width = 800<br>
.Height = 400<br>
End With<br>
End Sub<br>
怎样检查剪贴板上是否有文本?用判断剪贴板clipboard对象的gettext中字符串长度是否大于0来检查(如使"粘贴"菜单自动失效),如下例:<br>
If Len(Clipboard.GetText) > 0 Then<br>
mnupaste.Enabled = True<br>
Else<br>
mnupaste.Enabled=False<br>
End If<br>
在keydown事件中用组合键:如要求用户输入Ctrl+X键,则如下:<br>
Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)<br>
If KeyCode = vbKeyX And Shift = vbCtrlMask Then Unload Me<br>
End Sub<br>
shift的参数有vbAltMask(或4),vbCtrlMask(或2),vbShiftMask(或1),分别代表按下Alt,ctrl或shift键。</p>
<p align="center">
<br>
< <a href="050203.htm">上一页</a>--<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="050205.htm">下一页</a>
><br>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -