nScrollWidth=
nScrollWidth-nScrollStep
Else
bScrollState=False
EndIf
EndIf
Label_Congruation.Left=nScrollWidth
'以下为8秒钟内使“停止"按钮有效
IfnEnableSecond<=49Then
Ifm_bIsStart=TrueThen
nEnableSecond=nEnableSecond+1
EndIf
Else
Ifm_bIsStart=TrueThen
Command_Start_Stop.Enabled=True
nEnableSecond=0
EndIf
EndIf
EndSub
'动态定义数组
PrivateSubReDimNameArray()
DimnMaxIndexAsInteger
DimstrMaxIndexAsString
DimnIndexAsInteger
DimbIsBeginAsBoolean
bIsBegin=False
nIndex=0
OpenApp.Path+“\name.txt"ForInputAs#1'读文件
DoUntilEOF
(1)
IfbIsBegin=FalseThen
LineInput#1,strMaxIndex
nMaxIndex=Val(strMaxIndex)
MAX_INDEX=nMaxIndex-1
ReDimm_strNameArray(0TonMaxIndex-1)
bIsBegin=True
Else
LineInput#1,m_strNameArray(nIndex).strName
m_strNameArray(nIndex).bIsSelect=False
nIndex=nIndex+1
EndIf
Loop
'以下为打乱人员顺序10次
DimiAsInteger
DimjAsInteger
DimTempAsString
DimnRandomNumAsInteger
Forj=0To10
Fori=0TonMaxIndex-1
nRandomNum=((nMaxIndex-1)×Rnd)'利用Rnd函数
Temp=m_strNameArray(i).strName
m_strNameArray(i).strName=m_strNameArray(nRandomNum).strName
m_strNameArray(nRandomNum).strName=Temp
Nexti
Nextj
EndSub
PrivateSubInit()'读取INI文件
DimXAsLong
DimlpFileName
DimTempAsString×50
lpFileName=App.Path+“\Sortition.ini"
X=GetPrivateProfileString(“SYSTEM",“AppTitle",“抽奖程序",Temp,Len(Temp),lpFileName)
m_strAppTitle=Trim(Temp)
Temp=“"
X=GetPrivateProfileString(“SYSTEM","Title","欢迎使用抽奖程序",Temp,Len(Temp),lpFileName)
m_strTitle=Trim(Temp)
Temp=“"
X=GetPrivateProfileString(“SYSTEM",“ScrollTitleRight",“恭喜发财!
!
!
",Temp,Len(Temp),lpFileName)
m_strScrollTitleRight=Trim(Temp)
X=GetPrivateProfileString(“SYSTEM",“ScrollTitleLeft",“龙年大发!
!
!
",Temp,Len(Temp),lpFileName)
m_strScrollTitleLeft=Trim(Temp)
Form_Bouns.Caption=m_strAppTitle
Label_CompanyTitle.Caption=m_strTitle
EndSub
模块源程序:
'用于读取ini文件的API函数
DeclareFunctionGetPrivateProfileStringLib“kernel32"Alias“GetPrivateProfileStringA"(ByVallpApplicationnameAsString,ByVallpKeyNameAsString,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsLong,ByVallpFileNameAsString)AsLong
PublicTypeMyName
strNameAsString
bIsSelectAsBoolean
EndType
由于程序利用的windowsini文件保存一些标题信息,因而可以方便的修改使用环境,及标题内容。
见ini文件内容:
[SYSTEM]
;应用程序的form名称
AppTitle=“风云电脑抽奖Test"
;窗口的内的标题(限9个字)
Title=“大抽奖"
;右滚动的文字(仅能为如下格式:
XXXX!
!
!
)
ScrollTitleRight=“恭喜发财!
!
!
"
;左滚动的文字(仅能为如下格式:
XXXX!
!
!
)
ScrollTitleLeft=“祝您好运!
!
!
"
如此一个小小的电脑抽奖程序便完成了。
以上程序在VB6.0Windows98环境下编译通过
对于下雪的景象大家可能都不陌生,我们还是用VB来制作一个下雪的景象吧。
其实制作这样一个下雪的景象并不复杂,它的原理是首先在底色为黑色的屏幕上随机画出许多白点(雪花),然后使这些雪花不断地向下移动(重画),反复循环,就成功地模拟了下雪的景象。
下面是这个小程序,你可以修改其中的一些数据调整雪花的密度和雪花落下的快慢。
双击窗体写如下代码:
DimSnow(1000,2),AmountyAsInteger
PrivateSubForm_Load()
Form1.Show
DoEvents
Randomize
Amounty=325
ForJ=1ToAmounty
Snow(J,0)=Int(Rnd*Form1.Width)
Snow(J,1)=Int(Rnd*Form1.Height)
Snow(J,2)=10+(Rnd*20)
NextJ
DoWhileNot(DoEvents=0)
ForLS=1To10
ForI=1ToAmounty
OldX=Snow(I,0):
OldY=Snow(I,1)
Snow(I,1)=Snow(I,1)+Snow(I,2)
IfSnow(I,1)>Form1.HeightThen
Snow(I,1)=0:
Snow(I,2)=5+(Rnd*30)
Snow(I,0)=Int(Rnd*Form1.Width)
OldX=0:
OldY=0
EndIf
Coloury=8*(Snow(I,2)-10):
Coloury=60+Coloury
PSet(OldX,OldY),QBColor(0)
PSet(Snow(I,0),Snow(I,1)),RGB(Coloury,Coloury,Coloury)
NextI
NextLS
Loop
End
EndSub
编写窗体的鼠标按下代码:
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
unloadme
EndSub
运行上面的小程序,就可以看到漫天的雪花在缓缓落下,地面上还会有积雪!
鼠标单击可结束程
在编程中经常会遇到应用程序中要输入大量数据的问题,如果能在该程序中实现象电子表格那样的输入界面,就可以解决这个问题。
----VB虽提供了Grid网格控件,但其只具有显示输出功能,要使其能接受输入数据,必须对它加以改造,在计算机报刊中的许多文章都对此进行了探讨,但所用方法都不能令人满意,笔者经过摸索,找出以下办法,供有兴趣者参考。
----首先在VB5.0环境下Form1中放上各控件:
Text1;Grid1;Command1;Command2;Vscroll1;Hscroll1。
----双击Form1打开Code窗口,编制程序代码。
Diminputcolnum,inputrownumAsInteger
PrivateSubCommand2_Click()
End
EndSub
PrivateSubForm_Activate()
Text1.SetFocus'文本框获得焦点
EndSub
PrivateSubForm_Load()
Grid1.ColWidth(0)=540
Grid1.RowHeight(0)=216'单元格的宽和高
inputcolnum=13
inputrownum=15'表中显示的列、行数
Grid1.Cols=20
Grid1.Rows=20'表中总的列、行数
HScroll1.Height=300
VScroll1.Width=300'水平和垂直滚动条的高、宽度
Grid1.Height=(inputrownum+1)'
(Grid1.RowHeight(0)+Grid1.GridLineWidth*12)
+12+HScroll1.Height
'800×600象素时为12;640×480为15
Grid1.Width=(inputcolnum+1)*
(Grid1.ColWidth(0)+Grid1.GridLineWidth*12)
+12+VScroll1.Width
'表的高、宽度
HScroll1.Width=Grid1.Width-VScroll1.Width
VScroll1.Height=Grid1.Height-HScroll1.Height
'水平和垂直滚动条的宽、高度
HScroll1.Left=Grid1.Left
HScroll1.Top=Grid1.Top+Grid1.Height-HScroll1.Height
'水平滚动条的位置
VScroll1.Left=Grid1.Left+Grid1.Width-VScroll1.Width
VScroll1.Top=Grid1.Top
'垂直滚动条的位置
HScroll1.Min=1
HScroll1.Max=Grid1.Cols-inputcolnum
VScroll1.Min=1
VScroll1.Max=Grid1.Rows-inputrownum
'水平和垂直滚动条的范围
Text1.Width=Grid1.ColWidth(0)
Text1.Height=Grid1.RowHeight(0)
'文本框的宽、高度
Text1.Left=Grid1.Left+Grid1.ColWidth(0)
+Grid1.GridLineWidth*12
Text1.Top=Grid1.Top+Grid1.RowHeight(0
实时数据采集系统过去在DOS操作系统下一般是采用汇编语言开发制作。
随着Windows操作系统的普及应用,数据采集及工业控制等软件的开发也上升到Windows环境下。
可视化软件开发平台的出现,为软件开发提供了强大的图形界面功能,使得开发出来的各种应用软件具有良好的人机交互功能。
汇编语言的特点是功能强、运行速度快,但编程复杂、调试难,而高级语言具有良好的可读性及方便的调试手段。
VisualBasic是Windows环境下简单、易学、高效的可视化编程语言开发系统,以其所见即所得的可视化界面设计风格和32位面向对象的程序设计等特点,已广泛地应用于各个领域,是很多计算机软件开发人员采用的开发工具。
VB不但提供了良好的界面设计能力,而且在微机串口通信方面也有很强的功能。
采用VB开发Winodws下的数据采集和工业控制应用软件十分方便,尤其软件界面设计非常便捷,编程工作量较小,开发周期短,特别适合非计算机专业的工程技术人员掌握和使用。
2.MSComm控件特点
MSComm控件是Microsoft提供的扩展控件,用于支持VB程序对串口的访问,该控制“隐藏”了大部分串口通讯的底层运行过程和许多烦琐的处理过程,同时支持查询方法和事件驱动通讯的机制,事件驱动通讯是交互方式处理串口事务的一种非常有效的方法,特别适合Windows程序的编写。
在串口通讯过程中,当发送数据、收到数据或产生传输错误时,触发MSComm控件的OnComm事件,然后可以通过判断CommEvent属性值获得事件类型,再根据事件类型进行相应数据处理。
因此用其实现微机串口的数据通讯相当简单,以很少的程序代码就可以轻松实现串口的访问和数据通讯。
3.实时数据采集示例程序
下面给出的应用实例,通过对一台工业八通道实时检测仪表数据通讯协议进行分析,利用VB6.0开发微机通过串口对多通道工业仪表进行实时数据采集的编程技术。
给出的程序代码具有通用性,并有详示,可以直接或稍加