精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..技术文章连载..〓〓>>VB邮件>>VB邮件(5.27)

主题:VB邮件(5.27)
发信人: msnet()
整理人: cobe(1999-12-23 14:00:45), 站内信件
                      编者的话
====================================================================
大家好!
    这是关于VB和ASP的免费邮件列表。
    如果您有问题或想回答别人的问题,请给我写信。
    如果您有好的作品或您发现了好的作品,不要忘
了让大家共享。
    热情欢迎您的参与!!!
                                版主   冯德平
                                [email protected]
=============================================
            VB邮件(5.27)
a VB5.0数据库数据的选项录入及选项增减与编辑
                             广州  白莉 杨喜中

    摘要:在VB5.0数据库编程中,应用数据绑定组合框和数据绑定网格等控件实
现了数据的选项录入、选项增减与选项编辑,提高了数据录入效率和准确性。

    关键词:选项录入 选项增减 选项编辑 数据库

    高效准确地录入数据已成为MIS系统急待解决的问题,也是衡量MIS系统成功
的重要标志。本文在VB5.0数据库编程中应用数据绑定组合框和数据绑定网格等控
件实现了数据的选项录入、选项增减与数据编辑,提高了数据录入效率、准确性
及灵活性。(

    考察MIS系统涉及的数据性质、值域范围和变化程度,可以发现在MIS系统数
据录入中往往出现下列情况

    (1)连续录入的几条记录中,同名字段的内容完全相同或基本相同,如省份
、职称等;用户逐字录入速度慢易出错,因此应充分利用数据库中的已有数据,
设置一个复制键将上条记录中的同名字段的内容复制到当前记录的同名字段中;


    (2)有些字段的值域固定,因此程序应提供一个合法的选项框供用户选择来
提高速度;

    有些字段的值域较小且相对固定,但有一定的变化,如“省市”字段增设一
个省或市,撤县设市等等,程序除提供一个合法的基本的选项框供用户选择外,
且应允许用户对这个基本的选项框进行增减或编辑。

 

1 数据库基本录入界面的设计

    首先用VB中的数据管理器创建一个Access数据库“c:\MY.MDB”,在表“wor
ker”中加入一个字段“Name”,然后在VB的缺省表单中拖入一个数据控件、一个
文本框、一个表签、一个命令按钮组,合理设计界面布局,并设置各个控件的属
性,如表1。

    加入下列代码即可得到一个数据库基本输入窗口:

Private Sub Command1-Click(Index As Integer)

Select Case Index

Case0'addnew

Data1.Recordset.Addnew

Text1.SetFocus

Case1'edit

Data1.Recordset.Edit

Text1.SetFocus

Case2'giveup

Data1.Recordset.Cance1Update

Data1.Refresh

Case3'save

Data1.Recordset. Update

Data1.Refresh

Case4'delete

Data1.Recordset.Delete

Data1.Refresh

Case5'end

End

End Select

End Sub

    表一

控件名    属性名     属性值

Name       Data1

Data       DataBaseName "c:\MY.MDB"

RecordSource "worker"

 

Name Text1

Text Text ""

DataSource "Data1"

DataField Name

 

Label Caption "姓名"

 

Name Command1

CommandButton Index 0 1 2 3 4 5 

Caption "新增""编辑""放弃""保存""删除""退出"

 

2 设置CTRL键复制前条记录同名字段的内容

    在连续录入的几条记录中,同名字段的内容完全相同或基本相同,此时若能
充分利用 数据库中的已有数据,设置一个复制键将上条记录中的同名字段的内容
复制到当前记录的同名字段中,将能大提高数据录入速度。为了便于用户操作,
将这一功能赋予CTRL键,用户在录入新记录或编辑原有记录时,只要按下CTRL键
,则上条记录中的同名字段的内容就复制到当前记录的同名字段中。程序如下:


Option Explicit

Dim last As String

Private Sub Form-Activate()

Dim mark As Variant

mark=Data1.Recordset.Bookmark

Data1.Recordset.MoveLast

last=Data1.Recordset("name")

Data1.Recordset.Bookmark=mark

End Sub

Private Sub Text1-KeyDown

(KeyCode As Integer,Shift As Integer)

If Shift=2 Then '按下CTRL-KEY复制上条记录中的同名字段的内容

If Data1.Recordset.EditMode=dbEditInProgress

Or Data1.Recordset.EditMode=dbEditAdd Then

Text1.Text=last

End If

End If

End Sub

Private Sub Command1-Click(Index As Integer)

Select Case Index

Case0'addnew

Data1.Recordset.Addnew

Text1.SetFocus

Case1'edit

Data1.Recordset.Edit

Text1.SetFocus

Case2'giveup

Data1.Recordset.Cance1Update

Data1.Refresh

Case3'save

Data1.Recordset. Update

Data1.Recordset.MoveLast

last=Data1.Recordset("name") 'save the text to last

Data1.Refresh

Case4'delete

Data1.Recordset.Delete

Data1.Refresh

Case5'end

End

End Select

End Sub

 

3 数据的选项录入、选项增减及选项编辑

    有些字段的值域较小且相对固定,但会有一定的变化,如“省市”字段会产
生变化,如增设一个省或市,撤县设市等等,程序除提供一个合法的基本的选项
框供用户选择外,还应允许用户对这个基本的选项框进行增减或编辑。下面的程
序实现了此功能,用户双击表单则可对选项框进行增减和编辑,完成后再双击表
单关闭编辑功能。

    先建立一个数据库“c:myrand.mdb”,其表“rank”中加入一个字段“name
”;再从工具箱中拖入一个数据控件Data2,一个数据绑定组合框Dbcombol和数据
绑定网格控件DBgrid1。属性设置为:(1)Data2控件的:DatabaseName属性设为
“c:\myrand.mdb”,RecordSource为“Rank”;(2)Dbcombo控件的:Name设为
Dbcombo1,RowSource设为Data2,ListFiele设为“Name”,DataSource设为Dat
a1。DataField设为“Name”;(3)DBgrid控件的:Name设为DBgrid1,将Allow
AddNew、AllowDelete、AllowUpdate均设为True, DataSource设为Data2。程序代
码如下:

Option Explicit

Dim last As String

Dim dd As Boolean

Private Sub Form-Activate()

Dim mark As Variant

mark=Data1.Recordset.Bookmark

Data1.Recordset.MoveLast

last=Data1.Recordset("name")

Data1.Recordset.Bookmark=mark

Text1.Visible=True

DBCombol.Visible=False

DBGrid1.Visible=False

End Sub

Private Sub Form-DblClick() '双击表单打开或关闭选项增减和选项编辑功能


Static dd As Boolean

dd=Not dd '第一次双击打开编辑功能第二次双击关闭编辑功能

If dd Then

DBGrid1.Visible=True

Else 

DBGrid1.Visible=False

Exit Sub

End If

End Sub

Private Sub DBGrid1-DblClick() ’选择当前项后,再双击删除当前记录选项


Data2.Recordset.Delete

DBCombol.Refresh

DBGrid1.Refresh

End Sub

Private Sub DBGrid1-LostFocus()

DBCombol.Refresh '刷新DBCombol

End Sub

Private Sub Command1-Click(Index As Integer)

Dim i As Integer

Select Case Index

Case0'addnew

Data1.Recordset.Addnew

DBCombol.SetFocus

DBCombol.Visible=True

Text1.Visible=False

Case1'edit

Data1.Recordset.Edit

Text1.SetFocus

DBCombol.Visible=False

Text1.Visible=True

Case2'giveup

Data1.Recordset.Cance1Update

Data1.Refresh

DBCombol.Visible=False

Text1.Visible=True

Case3'save

Data1.Recordset. Update

Data1.Recordset.MoveLast

last=Data1.Recordset("name") 

Data1.Refresh

DBCombol.Visible=False

Text1.Visible=True

Case4'delete

Data1.Recordset.Delete

Data1.Refresh

Case5'end

End

End Select

End Sub

Private Sub DBCombol-KeyDown

(KeyCode As Integer,Shift As Integer)

If Shift=2 Then '按下CTRL-KEY复制上条记录中的同名字段的内容

If Data1.Recordset.EditMode=dbEditInProgress Or

Data1.Recordset.EditMode=dbEditAdd

Then

DBCombol.Text=last

End If

End If

End Sub% Private Sub Text1-KeyDown(KeyCode As Integer,Shift As Integer
)

If Shift=2 Then '按下CTRL-KEY复制上条记录中的同名字段的内容

If Data1.Recordset.EditMode=dbEditInProgress Or 

Data1.Recordset.EditMode=dbEditAdd 

Then

Text1.Text=last

End If

End If

End Sub

    通过上述方法使录入速度进一步得到提高,使用户的功效达到事半功倍的效
果。


b VB安装程序的汉化

                   伍涛

    在用Visual Basic编写好自己的应用软件后,通常需要一个安装程序来安装
它。VB本身提供了几种方法,一是使用“应用程序安装向导”(Application Se
tup Wizard),二是修改VB提供的安装示范程序Setup.EXE(该程序的工程文件及
源代码在VB\SETUPKIT\Setup1)子目录下)。

    第一种方法生成全是英文提示的安装程序。而如果采用第二种方法,软件开
发人员不但可以将全部的安装信息汉化,而且还可以根据自己的需要对此程序进
行修改达到特定的目的,例如加密、检查产品序列号等等,因此更为灵活。

    在VB3.0中,修改英文提示信息只需要在窗体代码中找到各个字符串,然后将
其改为中文就可以了,但是在VB4.0中,源代码中并没有直接使用英文字符串,而
是用VB4.0中新提供的字符串资源加载函数LoadRESString将定义在Setup1*.RES
(16位版本为Setup116.RES,32位版本为Setup132.RES)中的字符串资源加载到
程序中。这样做的最大好处就是当需要对字符串的内容进行改变时,只修改资源
文件即可,无需修改程序源代码。因此我们只需要将该资源文件的全部英文字符
串修改为中文就能够达到汉化的目的了。

    问题在于VB4.0中并没有提代可修改字符串资源文件(*.RES)的程序,为了
编辑该文件,我们必须找一个资源编辑器,例如Visual C++中提供的AppStudio或
者Borland C++中的RESourcesWorkShop。用资源编辑器将Setup1*.RES文件打开后
,用中文替换掉所有的英文信息,然后保存就可以了。在替换中需要注意的是,
凡是含有“{Title}”的部分不要改变,因为这一部分用来显示安装标题,它相
当于一个变量,对于安装不同的应用程序有不同的内容。

    经过对字符串资源文件这样的修改,在运行Setup程序时你就能看到漂亮的中
文安装界面了。而你甚至不需要对源代码做任何修改,重新生成EXE文件后,整个
汉化过程就全部完成了。

c VB编程的一些心得
    在大学作毕业设计的课题是编制一个教学软件,所以很自然地和VB这种易学
、易懂、界面友好漂亮的语言打上了交道。在编写的过程中当然遇到了许多的问
题,这里将一些简单的小程序写下来与喜爱编程的朋友们分享。

一、封面

    封面的设计是这样的,先出现一窗体,上面为你喜欢的图案。然后出现一艘
从左向右行驶着的船。屏幕上方从两侧分别移动出“欢迎”两个字。

    具体的制作方法是:把预先选好的背景图案装入封面窗体中,窗体命名为CA
I。再分别在三个图像控件(image)中装入预先制作好的位图“欢”、“迎”和船
型图案。然后把三个image放置在初始位置(即 图案刚在窗体出现时的位置),并
把它们的可视属性都设置为“false”。程序如下:

 

Sub Form_load()

 

cai.Show ′显示封面窗体

Dim i ′定义变量

image3.visible=True ′船型图像控件出现

a1: If image3.Left < 6120 Then

′6120为船移动到屏幕右边的坐标,此值可以随需要选取

image3.Move image3.Left+50

′移动此图像控件如嫌移动慢,可改变移动值

Goto a1

End If

image1.visible=True ′“欢”字出现

a2: If image1.Left < 2120 Then

′2120为“欢”字移动到屏幕中间的位置

image1.Move image1.Left+50 ′移动此图像控件

Goto a2

End If

image2.visible=True ′“迎”字出现

a3: If image2.Left > 5420 Then 

′5420为“迎”字移动到屏幕中间的位置

image2.Move image2.Left-50 ′移动此图像控件

Goto a3

End If

For i=1 To 10000 

′使窗体暂停一段时间时间长短可通过改变循环次数实现

Next i

menul.Show ′显示程序主窗体

Unload cai ′卸载封面窗体

End Sub

 

二、简单的“动画”

    点击一3D按钮后,屏幕表现光线平行进入一玻璃管,在管中有一散射中心,
有的光线射到此中心后反射到管的初始端。程序如下:

 

Sub Command3Dl_Click()

 

Dim i, j, k, m, n ′定义变量

 

For i=2080 To 5520 

 

′显示出三条线,直到图像中的散射中心处,颜色为黑色

 

Line(2080,2760)-(i,2760),RGB(0, 0, 0)

 

Line(2080,2860)-(i,2860),RGB(0, 0, 0)

 

Line(2080,2660)-(i,2660),RGB(0, 0, 0)

 

Next i

 

For j=5520 To 4800 Step-1 ′反射光线第一次射到管壁上

 

Line(5520,2760)-(j,2760-(5520-j)*.33333333),RGB

 

(255, 0, 0) ′反射光线,颜色为红色

 

Line(5520,2660)-(5520+(5520-j),2660),RGB(0, 0, 0)

 

Line(5520,2860)-(5520+(5520-j),2860),RGB(0, 0, 0)

 

′没有遇到散射中心的两条光线,为黑色,继续前进

 

Next j

 

For k=4800 To 3360 Step-1 ′反射光线第二次射到管壁上

 

Line(4800,2520)-(k,2520+(4800-k)*.33333333),

 

RGB(255, 0, 0) ′反射光线,颜色为红色

 

Line(6240,2660)-(6240+(4800-k),2660),RGB(0,0,0)

 

Line(6240,2860)-(6240+(4800-k),2860),RGB(0,0,0)

 

′没有遇到散射中心的两条光线,颜色为黑色

 

Next k

 

For m=3360 To 2080 Step-1 ′反射光线第三次射到管壁上

 

Line(3360,3000)-(m,3000-(3360-m)*.33333333),

 

RGB(255, 0, 0) ′反射光线,颜色为红色

 

Next m

 

End Sub

 

三、封底

    封底的设计是:先出现全黑的屏幕,然后从上至下逐渐拉出白底红字的“再
见”的字样。先按要求在画板中做一个BMP图,上面写着“再见”。然后在一名为
BYE的窗体中加入一个全屏大的Picturel, 将BMP图装入。程序如下:

 

Sub Form_Load()

 

Dim i ′定义变量

 

bye.Show ′封底出现

 

Unload menu1 ′卸载主菜单

 

al: If picture1.Height < 7130 Then ′7130为图的高度

 

picturel.Height=picture1.Height+50 ′下拉屏幕

 

GoTo al

 

End If

 

For i=1 To 20000 ′使窗体暂停一段时间

 

Next i

 

End ′结束所有操作

 

End Sub

=============================================
问题征答(5.27)
a 请问:当窗体的宽、高大于屏幕的宽与高时,如何打印窗体?
(我因要设计一个打印预览窗体,但无法打印处于屏幕以外的窗体上的内容)
谢谢!
chenupvc
=============================================
其它
网址推荐:
主页:VB小世界 http://vbsworld.yeah.net/或http://www4.netease.com/~cob
e
内容:有大量VB源代码,控件.另外,有7MB的API函数帮助文件,欢迎下载.
====================================================================
欢迎订阅VB免费邮件
====================================================================

订阅地址 http://server.com/WebApps/mail-list-subscribe.cgi?id=16852

====================================================================

如果您觉得这个邮件列表好的话,请告诉您的朋友。
====================================================================
欢迎投稿 [email protected]
====================================================================

网站主页地址:
网易上的主页地址:http://www4.netease.com/~aaaaaaaaa
本网站主页镜像地址:goodvbhome.yeah.net
====================================================================

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.47.238]

[关闭][返回]