分享
 
 
 

VB6常用方法汇编(7)

王朝vb·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Sub CalEnter2(RainName)

Combo_nm = RainName

combo_year_Click

End Sub

Private Sub Form_Load()

Dim j As Integer

Dim Temp

SetDb

Set Rst2 = New ADODB.Recordset

Rst2.Open "RAINSTAT", Cnn

While Not Rst2.EOF

Combo_nm.AddItem Rst2("rainstatnm")

Rst2.MoveNext

Wend

combo_year = Year(Date) - 1

For j = year0 To Year(Date) - 1

combo_year.AddItem j

Next j

Rst2.MoveFirst

Temp = Rst2("rainstatnm")

Combo_nm.ListIndex = 0

'从外部调用这个FORM

Gflag = False

If GisCD <> "" Then

Gflag = True

Set Rst2 = New ADODB.Recordset

Rst2.Open "select * from RAINSTAT where trim(rainstatcd)='" & Trim(GisCD) & "'", Cnn

On Error Resume Next

Temp = Rst2("rainstatnm")

If err.Number > 0 Then

MsgBox "调用错误,返回"

Unload Me

End If

Combo_nm.Enabled = False

End If

'Rst2.Close

CalEnter2 Temp

End Sub

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)

Dim strvalid As String

strvalid = "0123456789."

If KeyAscii > 26 Then

If InStr(strvalid, Chr(KeyAscii)) = 0 Then

KeyAscii = 0

End If

End If

If KeyAscii = 13 Then

If Index < 11 Then

Text1(Index + 1).SetFocus

End If

If Index = 11 Then

cmdjisuan(0).SetFocus

End If

If Index = 12 Then

cmdSubmit(1).SetFocus

End If

End If

End Sub

程序还用到公用模块代码:

Public Rst1 As ADODB.Recordset '记录集,和set联合使用

Public Rst2 As ADODB.Recordset '记录集,和set联合使用

Public Const year0 = 1950 '最早记录年份

Public GisCD As String 'GIS调用的计算分区号

Public Gflag As Boolean '判断是否为GIS调用

Public Sub SetDb()

Dim fpath2

Set Cnn = New ADODB.Connection

fpath2 = "DBQ=\\WEBGIS\share\降水量文件\raindb.mdb;DefaultDir=c:\VB\demo;Drive r={Microsoft Access Driver (*.mdb)};DriverId=281;FIL=MS Access;FILEDSN=C:\Program Files\Common Files\ODBC\Data Sources\test00.dsn;MaxBufferSize=2048;MaxScanRows =8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

Cnn.Open "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=" & fpath2

End Sub

十 文件处理

用open方法读文件

open s1 for input as #1

do while not eof(1)

line input #1, s2

msgbox s2

loop

close #1

用open方法写文件

重写

open s1 for output as #1

print #1, s2

close #1

附加

open s1 for append as #1

print #1, s2

close #1

用FSO对象读写文件

使用FSO对象前要引用Microsoft Scripting Runtime

Dim fso As New FileSystemObject

Dim ts1, ts2 As TextStream

Set ts1 = fso.OpenTextFile(fs1, ForReading)

Set ts2 = fso.OpenTextFile(fs2, ForWriting)

i = 0

Do While Not ts1.AtEndOfStream

s0 = ts1.ReadLine

ts2.WriteLine s0

i = i + 1

Loop

m = i

ts1.Close

ts2.Close

删除文件

Dim fso As New FileSystemObject

fso.DeleteFile fname1

Set File2 = fso.GetFile(t1)

File2.Delete

文件更名

把文件t1换名变成t2

t1 = "c:\logs\station.dbf..dbf"

t2 = "c:\logs\station1.dbf"

If fso.FileExists(t1) Then

Set File2 = fso.GetFile(t1)

If Not fso.FileExists(t2) Then

File2.Move t2

End If

Else

MsgBox "数据库文件" & t1 & "不存在!"

End

End If

复制文件

把文件t1复制成t2

t1 = "c:\logs\station.dbf..dbf"

t2 = "c:\logs\station1.dbf"

If fso.FileExists(t1) Then

Set File2 = fso.GetFile(t1)

If Not fso.FileExists(t2) Then

File2.Copy t2

End If

Else

MsgBox "数据库文件" & t1 & "不存在!"

End

End If

删除过期文件

添加File1控件,用来管理所有文件。先要设File1.Path

For i = 0 To File1.ListCount - 1

fn = File1.Path + "\" + File1.List(i)

Set File2 = fso.GetFile(fn)

tt = File2.DateLastModified

If today - tt > 10 Then ‘删除10天前的文件

File2.Delete

End If

Next

十一 收发E-mail

发送E-mail

调用: 【部件】下的Microsoft MAPI Control 6.0

放置控件: Form1:Command1, MAPISession1, MAPIMessages1

属性设置: 〖MAPISession1.名称〗=MAPIS,〖MAPIMessages1.名称〗=MAPIM

说明: 1. MAPISession控件用来进行联接和登录,MAPIMessages控件用来进行收发E-mail的操作。

2. 发送时向MAPIMessages.MsgNoteText输入E-mail内容。要输入多行,用MAPIMessages.MsgNoteText = line1 & vbCrLf & line2 即可。

代码:

Private Sub Command1_Click()

With MAPIS

.DownLoadMail = True '使用开机下载

.LogonUI = True '发送地址不对时可以手工设置

.SignOn '建立会话

End With

With MAPIM

.SessionID = MAPIS.SessionID '用SessionID指定对话序列号,缺省为0

.Compose '写新消息

.RecipAddress = "shuku@waterpub.com.cn" '写收件人地址

.AddressResolveUI = True '使用验证方式

.ResolveName '验证收件人地址

.MsgSubject = "head" '写E-mail主题

.MsgNoteText = "text" '写E-mail内容

.Send '发送

End With

MAPIS.SignOff '结束会话

MsgBox ("发送完毕。")

End Sub

接收E-mail

调用: 【部件】下的Microsoft MAPI Control 6.0

放置控件: Form1:Command1, MAPISession1, MAPIMessages1,Text1,Text2,Text3

属性设置: 〖MAPISession1.名称〗=MAPIS,〖MAPIMessages1.名称〗=MAPIM

说明::1.本例为接收一份E-mail的例子;

2.要先打开Outlook Express,并自动接受了邮件。程序从Outlook Express的收件箱中读取信件。

代码:

Private Sub Command1_Click()

With MAPIS

.DownLoadMail = True '使用开机下载

.LogonUI = True '发送地址不对时可以手工设置

.SignOn '建立会话

End With

With MAPIM

.SessionID = MAPIS.SessionID '用SessionID指定对话序列号,缺省为0

.Fetch '取信

Text3 = .MsgCount '信件数量

Text1 = .MsgSubject '主题

Text2 = .MsgNoteText '内容

'.Delete '取后删除

End With

MAPIS.SignOff '结束会话

End Sub

接收多封E-mail

放置控件和属性设置同前。

要先打开Outlook Express,并自动接受了邮件。程序从Outlook Express的收件箱中读取信件。

Dim i

Fpath3 = “C:\asp\temp\”

With MAPIS

.DownLoadMail = True

.LogonUI = True

.SignOn

End With

With MAPIM

.SessionID = MAPIS.SessionID

.Fetch

For i = 0 To .MsgCount - 1

.MsgIndex = i

s1 = fpath3 & .MsgSubject

Open s1 For Output As #1

Print #1, .MsgNoteText

Close #1

Next

For i = 0 To .MsgCount - 1

.Delete

Next

End With

MAPIS.SignOff

选择发送多封E-mail

放置控件和属性设置同前,增加Fiel1控件。

利用拨号上网时,要先打开Outlook Express,并已拨号上网,这样速度较快。否则每发送一封要拨一次号。

Option Explicit

Dim fscount, i, j

Dim fs1(200) As String

Dim fso As New FileSystemObject

Dim File2 As File

Function disfile(ss1 As String)

Dim sk

disfile = ""

Open File1.Path & "\" & ss1 For Input As #1

Do While Not EOF(1)

Line Input #1, sk

disfile = disfile & sk & vbCrLf

Loop

Close #1

End Function

Sub MAPIsend()

Dim fs2 As String

With MAPIS

.DownLoadMail = False

.LogonUI = True

.SignOn

End With

With MAPIM

.SessionID = MAPIS.SessionID

.Compose

For i = 0 To fscount - 1

'.MsgIndex = i

.RecipAddress = "wrf@waterpub.com.cn"

.AddressResolveUI = True

.ResolveName

fs2 = fs1(i)

'fs2 = "4bu0020.ppp"

.MsgSubject = fs2

.MsgNoteText = disfile(fs2)

.Send

Next i

End With

MsgBox "发送完毕"

End Sub

Sub mfilemove()

Dim fname1

For i = 0 To fscount - 1

fname1 = File1.Path & "\" & fs1(i)

'MsgBox fname1

fso.DeleteFile fname1

Next

End Sub

Private Sub Command1_Click()

j = 0

For i = 0 To File1.ListCount - 1

If File1.Selected(i) Then

fs1(j) = File1.List(i)

j = j + 1

End If

Next

fscount = j

If fscount < 1 Then

MsgBox "没有要发送的文件!"

Exit Sub

Else

For i = 0 To fscount - 1

fs1(i) = File1.List(i)

Next i

End If

MAPIsend

Mfilemove

MAPIS.SignOff

Unload Me

End Sub

Private Sub Command2_Click()

Unload Me

End Sub

Private Sub Form_Load()

Fpath1=”c:\fxfx\kfb\”

File1.Path = fpath1 & "email"

End Sub

十二 ActiveX控件

建立简单的ActiveX控件

这是一个显示时间的例子。

1.新建一个ActiveX控件工程

放置控件: UserControl1:Frame1,Timer1,Label1(小时),Label2(分),Label3(秒),使框架包容其它控件

属性设置: 〖Timer1.Interval〗=100 'ms

代码:

Private Sub Timer1_Timer()

Label1.Caption = Hour(Time) & ";"

Label2.Caption = Minute(Time) & ";"

Label3.Caption = Second(Time)

End Sub

Private Sub UserControl_Initialize()

Label1.Caption = Hour(Time) & ";"

Label2.Caption = Minute(Time) & ";"

Label3.Caption = Second(Time)

End Sub

然后保存文件,并生成OCX文件。

2.新建一个标准EXE工程,单击【工程】/【部件】,找到刚才生成的“工程1”部件,把它选中,然后从工具箱中把它添加到Form1中。这时就可以看见这个控件已经在运行了。然后就可以发布使用这个控件了。

改进ActiveX控件的接口

在【外接程序】/【外接程序管理器】中选择“ActiveX接口向导”的加载,再打开向导对话框,按照提示去做即可。

发布和应用ActiveX控件

在【外接程序】/【外接程序管理器】中选择“打包和展开向导”的加载,再打开向导对话框,选择【打包】,再选择【Internet】,在选项中选择“发布到没有VB的计算机上”,然后就可以在指定的文件夹中产生一个CAB文件,可以安装到其它计算机上使用。

这时还产生了一个同名的HTML文件,把其上的OBJECT代码拷贝下来,放到其它网页上,就可以在网上应用这个控件了。

建立一个复杂一点的例子

这是一个添加新的属性和方法的例子。

新建一个ActiveX控件工程,放置控件: UserControl1:command1,label1。

打开“ActiveX接口向导”,只选择caption(对应label1)和click(对应Command1),再新建一个属性leftx(对应label1)。

这时在UserControl1自动产生了几段代码,修改如下,然后再用下节的调试方法来进行在线调试。

'设置leftx的属性(用let和get分别设置赋值和被赋值的情况)

Public Property Let leftx(ByVal New_leftx As Integer)

Label1.Left = New_leftx

PropertyChanged "leftx"

End Property

'注意!不要删除或修改下列被注释的行!

'MemberInfo=7,0,0,0

Public Property Get leftx() As Integer

leftx = Label1.Left

End Property

'修改Click事件

Private Sub Command1_Click()

Me.Caption = Me.leftx

Me.leftx = Me.leftx + 50

RaiseEvent Click

End Sub

'添加一个初始值设置(没有大用处,只是练习)

Private Sub UserControl_Initialize()

Me.Caption = ""

End Sub

开发调试

先单击【工程】/【添加工程】,添加一个测试工程;

关闭 UserControl,这时工具箱中出现 UserControl控件,把它加入到Form1中,就可以运行这个程序了。

如果没有测试工程,也可以调用IE运行。

要在网页上加入这个控件,运行时查看HTML源文件,把下列说明复制下来,粘贴到网页中:

<OBJECT classid="clsid:0C174E17-67F5-11D5-98FB-BCF7F45EF11E">

</OBJECT>

其余的语句运行时自动产生。

安装和发布

对于DLL文件,拷贝到一个目录后,在【运行】中键入:

C:\WINDOWS\SYSTEM\REGSVR32.EXE C:\MYASP\ASPPING.DLL

或在NT中:

C:\WINNT\SYSTEM32\REGSVR32.EXE C:\MYASP\ASPPING.DLL

对于OCX文件,则要安装。步骤是:

1.编制程序(ACTIVEX控件);

2.在【工程】/【工程。。属性】中选“要求许可证关键字”;

3.编译成OCX文件;

4.打包。

十三 总体结构

用Timer控件控制程序运行

放置控件: Form1:Command1,Timer1

属性设置: 〖Timer1.Interval〗=10 '10ms

代码:

Dim i As Integer '循环变量

Dim doflag As Boolean '用户是否按键标志

Sub delay 同前

Private Sub example()

Form1.Print i

delay (500)

i = i + 1

End Sub

Private Sub Command1_Click()

Select Case doflag

Case True

Command1.Caption = "开始"

doflag = False

Cls

Case False

Command1.Caption = "停止"

doflag = True

End Select

End Sub

Private Sub Timer1_Timer() '时钟控件随时检测,如果没有点击

If doflag Then 'Command1(停止),则继续调用example过程

example

End If

End Sub

Private Sub Form_Load()

doflag = False

Command1.Caption = "开始"

End Sub

在过程中调用Form的模式方法

Form2.Show VbModal

在过程中调用Form的后台中断方法

放置控件: Form1:Command1, Form2:Command2

代码:

Private Sub Command1_Click()

Bl = True

Form2.show

Do While Bl do

DoEvents

Loop

End Sub

Private Sub Command2_Click()

Unload Me

Bl = False

End Sub

调用其它窗体中的过程

调用Form2的pp1过程:

Load Form2

Form2.pp1

定时播放提醒声

以下程序每隔10分钟播放提醒声,按COMMAND2停止。

Option Explicit

Dim s1, s2

Dim stopb As Boolean

Sub delay(ss As Long)

Dim start, check

start = Timer

Do

check = Timer

Loop While check < start + ss * 60

End Sub

Private Sub Command1_Click()

Dim i

s1 = "C:\Program Files\Windows Media Player\MPLAYER2.EXE"

s2 = " C:\windows\media\乐曲默认值.wav"

Do While Not stopb

Shell (s1 & s2)

delay 10

DoEvents

Loop

End Sub

Private Sub Command2_Click()

stopb = True

End Sub

Private Sub Form_Load()

stopb = False

End Sub

十四 加密

简单的密码框

放置控件: Form1:Text1,Command1;Form2

属性设置: 〖Form1.Command1.Caption〗=确定

〖Form1.Text1.text〗=""

〖Form2.Command1.Caption〗=Exit

Form1代码:

Private Sub Command1_Click()

If Text1.text = "123" then '设密码为123

Print "You are right!"

Else

Print "Sorry ! Input again."

Text1.Text = "" '清除以前输入内容

End If

Text1.SetFocus '焦点重新回到文本框

End Sub

Form2代码:

Private Sub Command1_Click()

End

End Sub

第一頁    上一頁    第7頁/共11頁    下一頁    最後頁
第01頁 第02頁 第03頁 第04頁 第05頁 第06頁 第07頁 第08頁 第09頁 第10頁 
第11頁 
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有