050205.htm
来自「提供一个VB学习教程,入门级。来源于网上」· HTM 代码 · 共 140 行
HTM
140 行
<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>
在VB中使用Windows的注册表:先介绍一下注册表,注册表有什么用?主要用来在程序初始化时保存某些以前由用户进行的设置。在windows文件夹下有一个Regedit.exe注册表编辑器,先打开它,左边一栏列出的多级"文件夹"样子的叫主键,每一个"文件夹"就是一个主键。右边一栏列出主键中包含的多个键,每个键包含"键名称"与"键数据"两部分:每个键都有"名称",键"数据"中存储的就是我们需要存入的内容。这样理解:"主键"就相当于文件夹,"键名称"就相当此文件夹下某文件名,"键数据"就相当此文件内容。<br>
1,向注册表写入一行文字:SaveSetting语句,其格式简单讲就是带4个字符串,而且这四个字符串确实可以是任意的,但是:注册表不是垃圾桶,而是有着很重要作用的程序管理功能,禁止乱写。<br>
SaveSetting 字符串1,字符串2,字符串3,字符串4<br>
SaveSetting "lxn56","startup","文件","这句话写到注册表里"<br>
前二个字符串表示在注册表中要创建的"主键"以存放文字,第3个字符串表示"键名称",第4个字符串表示"键数据",也就是需要存入注册表的文字内容。而正规的格式是:<br>
SaveSetting 程序名(主键),区域名(下级主键),注册表项的名称,注册表项 <br>
SaveSetting "lxn56","startup","recentfile","c:\windows\RegEdit.exe" <br>
运用多个savesetting语句,贯以不同的"注册表项的名称"和"注册表项",则可在同一主键下创建多个键。<br>
2,读取注册表中的数据内容,一,GetSetting函数,读取1个键值,格式:<br>
变量=GetSetting(程序名,区域名,注册表项名)<br>
lxn=GetSetting("lxn56","startup","recentfile")<br>
变量就等于先前写入的"名称"为recentfile的注册表项。 <br>
二,GetAllSettings函数,读取1个主键内所有键值,注意:它返回一个包含各键"名称"和"数据"的二维数组,格式:<br>
数组名=GetAllSettings(程序名,区域名)<br>
如先Dim lxn(20,1) as string<br>
lxn=GetAllSettings(App.title,"startup")<br>
那么,lxn(n,0)将表示一个键名称,lxn(n,1)将表示一个键数据。 <br>
如下例:<br>
varFiles = GetAllSettings(App.Title, reckey) reckey是变量,不是字符串<br>
For i = 0 To UBound(varFiles, 1)<br>
mnulist(i).Caption = varFiles(i, 1)<br>
mnulist(i).Visible = True<br>
Next i<br>
3,删除注册表中1个主键或主键中1个注册表项:DeleteSetting语句,格式:<br>
DeleteSetting 程序名,区域名,注册表项名称<br>
如果参数中省略"注册表项名称",则将删除整个"区域名"下级主键。<br>
当对一个对象进行多项属性设置时,可用简略格式With…End With…格式,如:<br>
with command1<br>
.caption="退出"<br>
.style=1<br>
.picture=loadpicture("e:\dmt\ico\face3.ico") <br>
end with<br>
照样即可。<br>
当我们用Dim 对象变量 as object: set 对象变量=(textbox等等)来引用对象时,在引用完后,应将对象卸载,可用Unload语句或--Set 对象变量=Nothing<br>
类模块:类模块的初始事件只有两个:initialize事件:加载模块时的初始化代码;Terminate事件:卸载模块时的代码。 <br>
一,向类中添加属性:一种方法是定义public变量(在类模快中通用或任何sub过程中都可以),第二种方法是使用Property属性过程.我们在一个程序中,使用对象属性,无非是设置属性值(如label1.caption="李新宁")或引用属性值(如lxn=text1.text),设置属性值时,我们让它调用prorerty let过程,设置的属性值用参数传递,如:<br>
在程序中:<br>
Dim lxn as new class1<br>
Private Sub Form_Load()<br>
lxn.volume=500 500传递到vNewValue参数中。<br>
End Sub<br>
在类模块中:<br>
private vol as string 类模块自身的变量<br>
Public Property Let volume(ByVal vNewValue As String) 在程序中设置的属性值 vol= vNewValue 通过vNewValue参数传过来 <br>
End Property<br>
而引用属性值时,我们让它调用Property Get过程,如:<br>
在程序中:<br>
if lxn.volume>=500 then unload me<br>
在类模块中:<br>
Public Property Get volume() As String<br>
volume = vol vol是类模块中用来传递属性值的局部变量<br>
End Property <br>
总之,property属性过程包括:1,向调用的程序返回属性值:Property Get过程;2,向调用的程序设置属性值:Property Let过程;3,Property Set过程。当属性的值为一个对象时,取代Let过程,设置对象变量的属性值。用属性过程设置类的属性是一个比较全面的方法(如需要设置只读属性等)。<br>
另外,也可以给一般的窗体Form增加自定义的属性,只要在窗体模块代码区域用public结合Property Let和Property Get就行了,注意要用public来声明属性过程。如:<br>
Dim a As Long 内部变量<br>
Public Property Let lxn(ByVal vNewValue As Long) 设置属性值的属性过程<br>
a = vNewValue<br>
End Property<br>
Public Property Get lxn() As Long 引用属性值时的属性过程 <br>
lxn = a<br>
End Property
<p>Private Sub Command1_Click() 设置属性值<br>
Form1.lxn = 500<br>
End Sub<br>
Private Sub Command2_Click()<br>
Print Form1.lxn 引用属性值<br>
End Sub<br>
二,向类中添加方法:方法是类的主体,我们通过sub过程或function过程,并用参数的传递(程序中表现为方法的参数),返回值,属性的改变等来达到各种各样的目的<br>
三,向类中添加事件:用RaiseEvent语句, <br>
集合:建立集合:Dim 集合名 as new collection<br>
集合的通用属性方法:add方法,向集合中添加一项;<br>
append方法,向集合中附加一项;<br>
refresh方法:刷新集合中的数据;<br>
remove方法:从集合中删除一项;<br>
count属性:返回集合中元素的项数;<br>
item属性:在集合中标识某一个项,可省略;<br>
parent属性:返回代表集合父对象的对象。<br>
有时候,DLL过程的一个参数可能接受不确定数据类型,如果需要传递多种类型的数据,可将参数声明为as Any.这时,前面的ByVal也不要了,如uFlug as Any.<br>
一个程序的界面窗体在每次开始运行时总是一样的,如果想让窗体样式保持用户作的修改,在下次启动时能按用户的调整显示,就需要将窗体的left,top和windowstate等属性值另写入到一个ini文件里面。可用open语句另创建一个ini文件。<br>
编写DLL文件:在新建工程时选ActiveX DLL,其写法就和普通类模块写法一模一样(连缺省名class1都一样),自编属性与方法甚至事件,编写完后,在"文件"菜单中选"生成某某名.dll"进行编译即可。怎样使用编好的DLL文件呢?要在"工程"菜单"引用"中找到那个"某某名"(在保存DLL工程时自定的名字)选中复选框,然后就象创建word,excel等对象库引用那样创建对象变量,进行属性方法引用。(--怎么创建的"DLL"说来说去还是对象?不能象人家的system文件夹下的那样?我不明白。)<br>
举一个最简单的例子吧,说明一下:在新建工程中选ActiveX DLL->打开属性窗口,将模块class1更名为lxndll,再看看它的instancing属性是否为5(允许同时创建此"类"的多个实例)->写以下代码(求两个数中的大数)<br>
Public one As ingeger, two As Integer one和two是"lxndll"类的两个属性<br>
Public Function max(ByVal one As Integer, ByVal two As Integer) As Integer<br>
If one > two Then 类lxndll的max方法<br>
max = one<br>
Else<br>
max = two<br>
End If<br>
End Function<br>
->编译成DLL文件->另创建一个标准EXE工程->"工程"菜单"引用"中找到"工程1",选中复选框(如果有名称冲突,在"工程1属性"中将现工程改名)->在代码中写:<br>
Dim lxn As New lxndll<br>
Private Sub Command1_Click()<br>
x = 50<br>
y = 41<br>
z = lxn.Max(x, y)<br>
Print z<br>
End Sub<br>
就进行了"DLL"的引用。<br>
[问题:我听说在"工程"菜单中的"引用"都是在注册表中对项进行注册了,就会在"引用"的表中出现,我在注册表编辑器中进行"查找",却发现是在HKEY_CLASSES_ROOT中CLSID中某"两"个好长好长名称的主键里,象这样:{80405424-73E2-11D5-BA9A-E53E2E553305}真象天文数字一样,在CLSID下有两个键同时保存了同一个"引用"项的信息,而在CLASSES-ROOT下也有一个很好找的主键存储了这个"引用"项的信息,也就是:一个新添的"引用"项共在注册表中三处进行了写入。<br>
但是,这里面的规律是什么?}</p>
<p align="center">
<br>
< <a href="050204.htm">上一页</a>--<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="050206.htm">下一页</a>
><br>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?