博文
导出数据到Excel(2005-10-03 09:29:00)
摘要:Option Explicit
Private Const m_Msg = "此功能需要Microsoft Excel 支持,请先安装 Office !"
Private Const M_DEUBG = False
'---------------------------------------------------------------------
'导出列表到Excel
'普通的模板,
'作者:甲甲虫
'Accept: rsobject , the recordset what need export
' rstitlle , the report's title
' replaceZero , replace the zeroCell in the report
'----------------------------------------------------------------------
Public Sub ExportToExcel(strTitle As String, rsObject As Recordset, Optional ByVal ReplaceZero As Boolean = False)
'表中字段的个数,记录个数
Dim lFieldsCount As Long, lRecordCount As Long
Dim strHead() As String '记录的字段名称
Dim xlsApp As Object
Dim xlsBook As Object
Dim xlsSheet As Object
Dim i As Integer
'报表标题,表格字段名,表格内容的地址,表头和表格的合地址,记录所在列的地址
Dim strTitleAddress As String
Dim strHeadAddress As String
Dim strBorderAddress As String
Dim strHeadAndBorderAddress As String
Dim strTitleAndHeadAddress As String......
MsFlexGrid使用总结(2005-10-03 09:28:00)
摘要:最近看到我们群里和论坛里关于MsFlexGrid的讨论很多,搜集了一点这方面的资料供大家参考.大家可以继续添加
begin:
VB中MsFlexGrid控件的使用细则(收集)
>> 将文本赋值给MsFlexGrid的单元格
MsFlexGrid.TextMatrix(3,1)=”Hello”
>> 在MsFlexGrid控件单元格中插入背景图形
Set MsFlexGrid.CellPicture=LoadPicture(“C:\temp\1.bmp”)
>>选中某个单元
MsFlexGrid.Row=1
MsFlexGrid.Col=1
>>用粗体格式化当前选中单元
MsFlexGrid.CellFontBold=True
>> 添加新的一行
使用AddItem方法,用Tab字符分开不同单元格的内容
dim row as string
row=”AAA”&vbtab&”bbb”
MsFlexFrid1.addItem row
>>怎样来实现MSFlexGrid控件单数行背景为白色,双数的行背景为蓝色?
Dim i As Integer
With MSFlexGrid1
.AllowBigSelection = True ’ 设置网格样式
.FillStyle = flexFillRepeat
For i = 0 To .Rows - 1
.Row = i: .Col = .FixedCols
.ColSel = .Cols() - .FixedCols - 1
If i Mod 2 = 0 Then
.CellBackColor = &HC0C0C0 ’ 浅灰
Else
.CellBackColor = vbBlue ’ 兰色
End If
Next i
End With
>> MSFlexGrid控件如何移到最后一行
用VB制作注册软件的方法(2005-10-03 09:26:00)
摘要:我自己制作的一个注册软件,希望能给大家带来帮助
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
'此模块的作用是检测用程序所在机器C盘序列号并存入一个加密后的文本文件yibao.ini中,
'在每次运行时检测C盘序列号并与加密文本文件中的相应值进行比较如果不符提示用户进行注册
Public Reg_C As String
Public Reg_Key As Long
Public Jia_Mi_File As String
Public Jia_Mi_Char As String
Public Fso As New FileSystemObject
Public Ctf As TextStream
Public Function Jia_Mi_Txt()
Reg_C = Abs(GetSerialNumber("c:\"))
If Dir(App.Path & "\yibao.ini") = "" Then
'建立一个文本文件
Open App.Path & "\yibao.ini" For Output As #1
Print #1, "00000000"
......
用VB编写异步多线程下载程序(2005-10-03 09:25:00)
摘要:为了高效率地下载某站点的网页,我们可利用VB的Internet Transfer 控件编写自己的下载程序, Internet Transfer 控件支持超文本传输协议(HTTP) 和文件传输协议 (FTP),使用 Internet Transfer 控件可以通过 OpenURL 或 Execute 方法连接到任何使用这两个协议的站点并检索文件。本程序使用多个Internet Transfer 控件,使其同时下载某站点。并可判断文件是否已下载过或下载过的文件是否比服务器上当前的文件陈旧,以决定是否重新下载。所有下载的文件中的链接都做了调整,以便于本地查阅。
OpenURL 方法以同步方式传输数据。同步指的是传输操作未完成之前,不能执行其它过程。这样数据传输就必须在执行其它代码之前完成。
而 Execute 方法以异步方式传输数据。在调用 Execute 方法时,传输操作与其它过程无关。这样,在调用 Execute 方法后,在后台接收数据的同时可执行其它代码。
用 OpenURL 方法能够直接得到可保存到磁盘的数据流,或者直接在 TextBox 控件中阅览(如果数据是文本格式的)。而用 Execute 方法获取数据,则必须用 StateChanged 事件监视该控件的连接状态。当达到适当的状态时,调用 GetChunk 方法从控件的缓冲区获取数据。
首先,建立启始的http检索连接,
Public g As Variant
Public k As Variant
Public spath As String
Dim links() As String
g = 0
spath = 本地保存下载文件的路径
links(0)=启始URL
inet1.execute links(0), "GET" '使用GET方法。
事件监控子程序(每个Internet Transfer 控件设置相对应的事件监控子程序):
用StateChanged 事件监视该控件的连接状态, 当该请求已经完成,并且所有数据均已接收到时,调用 GetChunk 方法从控件的缓冲区获取数据......
MSComm控件的属性(2005-10-03 09:24:00)
摘要:MSComm控件的属性
(必须要熟悉的几个——CommPort:设置并返回通信端口号;Setting:以字符串的形式设置并返回数据传输速率、奇偶校验、数据比特、停止比特;PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区定一个字符串)
1)CommPort属性
void SetCommPort(short nNewValue); short GetCommPort();
这一属性设置并返回连接的串行端口号,Windows将会利用该串口和外界通信。在设计时,nNewValue可以设置成从1~16的任何数(默认值为1)。但是如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。
注意:必须在打开端口之前设置CommPort属性。
2)Settings属性
void Settings(LPCTSTR lpszNewValue); String GetSettings();
该属性用于设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数。当端口打开时,如果value非法,则MSComm控件产生错误380(非法属性值)。其中lpszNewValue用字符串表示,由四个设置值组成,有如下的组成格式:
“BBBB,P,D,S”
BBBB为数据传输速率,P为奇偶校验,D为数据比特,S为停止比特。Value的默认值是:“9600,N,8,1”,数据传输速率合法值可以是110、300、600、1200、2400、4800、9600、14400、19200、28800、38400、56000、57600、115200、12800、25600。
奇偶校验值可以是设置为下表的任一值。
设定值 描述
E 偶校验(EVEN)
M 标号校验(MARK)
N 无校验(NONE)
O 奇校验(ODD)
S 空格校验(SPACE)
数据比特数可以是4、5、6、7、8。
停止比特数可以是1、1.5、2。
注意:只有当通信的双方的Settings属性值都一样时,通信连接才能生效。
3)Handshaking属性
这一属性用于设置或者返回硬件握手协议,也......
Winsock“1服务器,N客户端”通讯程序(完整原程序)(2005-10-03 09:19:00)
摘要:TCP/IP集团通讯演示程序,在WIN98调试通过,详细请自行下载进行学习测试,程序大小4K
下载地址:http://www.lshdic.com/download/lshdic/vb_winsock.zip
代码浏览:
Private Sub Check3_Click() '客户端二开启及中断对服务器的连接
If Check3.Value = 1 Then
On Error Resume Next
w3.RemoteHost = Text9.Text: w3.RemotePort = Text10.Text: w3.Connect
If Err.Number <> 0 Then MsgBox "被连接的主机地址或连接端口号错误", vbCritical, "找不到服务器": Check3.Value = 0: Exit Sub
Else
If w3.State = 7 Then w3.SendData "职员2[" & w3.RemoteHostIP & "]终止连接,退出系统": DoEvents: Text11.Text = ""
w3.Close
End If
End Sub
Private Sub Command1_Click() '服务器发送数据
str0 = 0
For i = 0 To w1.Count - 1
DoEvents
If w1(i).State = 7 Then w1(i).SendData "企业管理员公告:" & Text4.Text: str0 = str0 + 1
Next
If str0 = 0 Then MsgBox "未用客户正连接服务器,无法发送数据", vbCritical, "未有用户"
End Sub
Private Sub Command2_Click() '客户端一发送数据
If w2.State <> 7 Then MsgBox "未连接主机或连接主机工作正在进行,无法发送数据", vbCritical, "连接不正常": Exit Sub
w2.SendData "职员1:" &......
用VB6实现文件分割和还原(2005-10-03 09:14:00)
摘要:虽然目前个人大容量存储设备(如CD、MO等)已经被广泛应用,但是由于光盘刻录机等设备价格居高不下,所以人们最常用的存储媒介还是软盘。使用软盘就存在容量有限的问题,对于较大的文件必须将文件进行分割(让文件分割成方便的大小),才能用软盘拷贝和携带。目前,有许多软件具有此项功能,但由于在文件还原时,要求执行还原的机器也必须安装同样的软件才能执行还原操作,考虑到软件的授权问题,实现起来非常不方便。笔者用VB 6中的二进制双通道技术实现了该功能,只要运行该程序,即可方便地实现文件的分割和还原。
编程原理和思路
文件分割实际上就是将目标文件用二进制读写的方法,精确地连续保存为合适大小的独立文件的过程。文件还原是文件分割的逆过程,即将分割后的文件严格地按照分割顺序用二进制读写的方法写入同一个文件的过程。
使用双通道技术是因为当被分割的文件较大或者非常大(远大于内存)时,利用单个文件通道定义的内存二进制缓冲数组非常容易造成内存的耗尽而导致操作失败,并且单个文件通道的处理速度和可靠性也不令人满意。
首先使用双通道技术将目标文件分割成指定大小的文件,扩展名为“指定文件名+.源文件扩展名+.分割序号”。分割时,生成一个还原信息文件“被分割文件名.HY”,该文件记录文件分割的有关信息。文件还原时,同样利用双通道技术,按照在还原信息文件中登记的信息,将待还原的文件写入同一个文件中即可。
编程实现
实现分割功能的主要代码如下:
1.分割操作
Public Function SplitFile(SplitFileName As String, BeginningNumber As Long, ReturnErrorDes As String, Split As Long, oName As String) As Boolean
/*分割文件函数返回一个逻辑值,true代表成功,false代表失败。参数依次是:被分割文件名、起始编号、返回错误信息、分割后文件大小、分割后文件名称*/
Dim SaveName As String
/*文件通道变量*/
Dim fnum As Integer, fnum1 As Integer
SplitFile = True /*初始化*/
On Erro......
VB数据类型(2005-10-03 09:13:00)
摘要: VB数据类型
数据:是指能够输入到计算机中,并能够被计算机识别和加工处理的符号的集合。是程序处理的最小对象。例:数值、字符、图形、图像和声音等都是数据。
数据在程序中以常量或变量的方式被引用,不同的数据特点有不同的存储要求和处理算法,数据类型这一概念可以用来区别不同的数据特点。VB中有系统定义的基本数据类型,而且允许用户根据需要定义自己的数据类型。
1.基本数据类型(11种)
数据类型 类型名 存储空间 范围 类型说明符
整型 Integer 2字节 -32768~32767 %
长整型 Long 4字节 -2147483648~2147483647 &
单精度型 Single 4字节 -3.402823E38~-1.401298E-45
1.401298E-45~3.402823E38 !
双精度型 Double 8字节 #
货币型 Currency 8字节 -922337203685477.5808~
922337203685477.5807 @
字节型 Byte 1字节 0~255
字符串型 String 1~65535字节 $
布尔型 Boolean 2字节 True 或False
日期型 Date 8字节 100.1.1~9999.12.31
对象型 Object 4字节 任何对象的引用
可变类型 Variant 可以成为上边所有类型
2.1.1 常量
常量:在程序的执行过程中,其值保持不变的量。分常数和符号常量。
1.一般常数
*数值常数:123,1.23,1.0E2,12.5D3
*字符串常数:”abc”,”你好”
*逻辑常数:True False
*日期常数:(用#括起来),#15/9/2002# #January 1,1993# #1 Jan 93# #2002-9-9 10:30:30 pm#
常数的类型:在常数的后加类型说明符指定常数的类型
如:-58& 3.1# 3.1@
2.符号常量
符号常量:在程序中用标识符表示的常数。分内部符号常量和用户定义符号常量
用户定义符号常量的说明:
格式:[ Public | Private ]......
Visual Basic 安装界面的美化方法(2005-10-01 20:59:00)
摘要:Visual Basic 安装界面的美化方法
首先,用VB自带的打包程序进行打包。
打包后文件夹里有一个比较重要的文件就是“执照套打.BAT”这个批处理文件(不同的工程,文件名会不一样),当你的工程改动之后,你可以将工程重新编译一下,然后将执行文件拷贝到此SUPPORT目录下,执行这个批处理文件,就可以重新打包,而不需要每次改动都运行打包向导了。
还有一个比较重要的文件就是SETUP1.EXE这个文件,他是安装的主文件,安装时我们看到的界面就是这个文件运行产生的。他是用VB写的,源程序在VB的安装目录下:“C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1\SETUP1.VBP”,你可以用VB直接来编辑此工程(VB的安装界面太丑了,所以你可以自己改动,改的怎么样就要看你自己的能力了~~~),
这里对向导打包生成的SERTUP.LST(安装信息文件)进行一下介绍,如下图所示:
这是文件的第一个区的内容,SetupTitle设置的是解压窗口的标题,SetupText设置的是解压窗口的内容。改动之后,如下图所示:
接下来介绍一下SERTUP.LST文件Setup区的作用,如下图所示:
改动Color为不同的值,可以改变安装窗口的背景色(默认为蓝色,看都看腻了)。改为16之后为绿色(当然还有其他的颜色,你可以自己慢慢试~~~),效果如下图所示(这是我改动之后的VB自带的安装程序的安装界面,大家觉得怎么样,是不是不比其他的一些安装软件的界面逊色):
好了,VB的安装程序完全是VB自己做的,到底怎么改以及改动的漂亮与否,就要看你自己的水平与美术功底了,反正安装程序的源码都给你了,你想怎么做都行~~~~~......
VB中使用Word的“艺术字”(2005-10-01 20:53:00)
摘要:VB中使用Word的“艺术字”
胡轶
众所周知,Word中的“艺术字”工具(WordArt)能创建出各种各样的文字,令人赏心悦目。其实在VB中也能使用“艺术字 ”!Word本身就是一个庞大的代码部件,也就是说,Word中的整个对象库是对外开放的,它允许其他应用程序对它进行编程。换 句话说,Word中的对象能被其他应用程序所调用。而“艺术字”正是Word中的一种对象,因此可以方便地在VB中调用它。要使 用“艺术字”,必须先把Word的对象库加入到程序中,然后创建一个对象变量来保持对Word应用程序对象的引用。可以用两种方 法创建对Word应用程序对象的引用,一种方法是直接声明一个Word应用程序的对象变量,例如:
Dim XYZ As New Word.Application
这种方法称为前期绑定,它速度较快;另一种方法是声明一个对象变量XYZ,然后把用CreateObject函数创建出的Wor d应用程序对象赋给XYZ,例如:
Dim XYZ As Object
Set XYZ=CreateObject("Word.Application")
这种方法称为后期绑定,它速度较慢。在创建了Word应用程序对象后,就可以以代码的方式像在Word中进行具体操作那样创建新 文档,并在文档中加入“艺术字”。
在创建好“艺术字”之后,用剪贴板将它传给窗体。在创建Word应用程序对象时,VB会在后台自动打开Word,因此,在程序结 束时,应该先关闭Word,其代码如下:
XYZ.Quit wdDoNotSaveChanges
下面用Word97为例来说明如何使用Word的“艺术字”。
(1)启动VB,选择“标准EXE”,创建一个新工程;
(2)选择“工程”菜单中的“引用”选项,显示“引用”对话框,选中"Microsoft Word 8.0 Object Library"和"Microsoft Office 8.0 Object Library"两项,单击“确定”按钮;
(3)将下列代码加入到Form1的声明部......