这个如何看台式机配置的配置如何

君,已阅读到文档的结尾了呢~~
VB中控件数组的使用方法,可动态调整及一些其他数组方法使用;还有几个示例。
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
使用控件数组(VB6)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口6024人阅读
1.&&& 概述 &在使用 Visual Basic& 进行程序设计的过程中,如果能在运行时刻动态地创建和删除控件,可以极大地丰富界面的处理和变化。本人在设计网络监控系统时,需要在原理图与实物示意图间切换。切换的过程采用本文介绍控件的动态创建和删除来实现,有效地节省了系统资源,同时也有利于简化界面的维护。下面将就 Visual Basic 6.0 中的控件在运行时刻的创建和删除的两种方法&&控件数组和控件集合作详细的阐述。2.&&& 基于控件数组的动态控件的创建与删除 &vb& 中的控件数组实际上也是一种数组,其中的每个控件具有相同的 Name 属性,但具有不同的 Index 属性,在这里 Name 属性类似于数组的名字,而 Index 属性类似于数组的下标同时,控件数组也支持普通 VBA 数组的 LBound& 、 UBound 和 Count 方法,控件数组中的控件可以共享一个事件过程,便于代码的编写和集中处理,这正是使用控件数组的最大的理由。但是控件数组与普通的数组并非完全一样,它不需要定义大小,只有这样我们才可以动态的扩展[kuo zhan]它。下面给出利用 Load 命令动态添加控件和 Unload 命令动态删除控件的一般方法:(1)&&&&&&&&&&&&& 首先在窗体上放置一个 TextBox ,其 Name 属性设置为 Text1 , Index 属性设置为 0 ,这样我们就创建了一个 TextBox 控件数组,其中有一个成员。(2)&&&&&&&&&&&&& 在窗体上放置一个命令按钮 Command1 ,在其 Click 事件中添加如下的代码:Load Text1(1)Text1(1).left=0Text1(1).visible=true(3)&&&&&&&&&&&&& 在窗体上放置一个命令按钮 Command2 ,在其 Click 事件中添加如下的代码:Unload Text1(1)(4)&&&&&&&&&&&&& 运行。单击命令按钮 Command1 ,窗体上会出现一个新的文本框;单击命令按钮 Command2 ,窗体上刚出现的新的文本框就被删除。需要注意的是: Load 命令创建的控件 Text1(1) 与设计时已经放在窗体上的控件 Text1(0) 有完全相同的属性,也包括大小和位置等属性,例外的就是 Index 属性不一样, Visible 属性默认为 False, 所以必须在 Load 方法执行之后,执行调整控件位置的语句[yu ju],并把其 Visible 属性设置为 True ,以便在窗体上可见。 Unload 命令只能删除动态加载的控件,若删除设计时创建的控件会产生错误[cuo wu]。另外,利用上面提到的数组的一些方法,可以有效的简化代码的编写。以下的代码可以删除所有动态创建的 Text1 控件数组中的控件 : &Do While Text1.Count&1Unload Text1(Text1.Ubound)Loop需要说明[shuo ming]的是,菜单数组是控件数组的一种特殊的形式,只是它是在菜单编辑器[bian ji qi]中设置相应的 Name 和 Index 属性,而且要求一个菜单控件数组中的菜单项必须是同一级菜单,但是不能创建新的顶级菜单。而动态创建和删除菜单项的方法也使用 Load 和 Unload 方法,只是默认情况下其 Visible 属性是 True, 而且不用重新设置相应的位置。&& &3.&&& 基于控件集合的动态控件的创建与删除 &VB& 中提供一个 Controls 集合,用以包含当前窗体中的所有的控件,这对于实现一些功能相对复杂的操作相当有好处。而且 Controls 集合也是集合的一种,它支持一般集合的 Count 等方法和相应的检索[jian suo]机制[ji zhi]。以下两例就是利用这个控件集合的巧妙实现。要清空当前窗体上的所有的文本框,可以如下实现:Dim Ctl as ControlFor Each Ctl in ControlsIf Typeof Ctl is Textbox thenCtl.Text=& &&EndifNext Ctl也可以利用集合的 Count 方法如下实现:For i=0 To&&& Controls.Count-1If Typeof Ctl is TextBoxControls(i).Text=& &&EndifNext i当然,控件集合毕竟是一种特殊的集合,下面给出利用 Add 方法动态添加控件, Remove 方法动态删除控件的一般方法:(1)&&&&&&&&&&&&& Controls& 集合的 Add 方法其语法[yu fa]格式为:Set mycontrol = controld.Add(ProgId, Name, [Container])在这里, mycontrol 是一个自定义的控件对象,若需要新创建的控件对事件做出反应,还要再定义该对象时增加 WithEvents 关键字ProgId& 是库名 . 控件名形式的控件类的名字, ToolBox& 中的控件一般具有类似于 VB.CommandButton 这样的形式。而 Active X 控件的形式则有所差别,比如若使用 Windowless 控件库中的控件一般具有类似于 MsWless.WlText 的形式。Name& 参数是想赋给控件的名字,与控件的 Name 属性相对应。Container& 参数是可选的,它代表欲放置控件的容器,默认情况下是放置在窗体上。下例是在窗体上动态创建一个命令按钮,然后单击命令按钮时,执行相应的动作:Dim WithEvents mycontrol As CommandButtonPrivate Sub Form_Load()Set mycontrol = Controls.Add("VB.commandbutton", "mycontrol")mycontrol.Left = 0mycontrol.Caption = "my"mycontrol.Visible = TrueEnd SubPrivate Sub mycontrol_click()MsgBox "You click me!", vbExclamationEnd Sub需要注意,动态创建的控件必须指定相应的属性,而且在默认情况下,其 Visible 属性是 False 。(2)&&&&&&&&&&&&& Controls& 集合的 Remove 方法利用 Controls 集合的 Remove 方法可以删除用 Add 方法动态创建的控件。其语法[yu fa]格式为:Controls.Remove&& && 控件名& &比如以上创建的 mycontrol 要删除可以使用如下的命令:Controls.Remove "mycontrol"同样应该注意,不能删除一个不存在或者在设计时创建的控件。4. Active X&&& 控件的动态创建和删除 &以上论述的方法适合于控件在应用程序[ying yong cheng xu]工具箱( TOOLBOX )中的情况,而& Active X& 控件一般在应用程序[ying yong cheng xu]运行机器上,但没有在工具箱中,这种情况则需要先进行注册,方法是利用 Regsvr32 在 Windows 环境中注册,或者在 VB 代码中进行注册,方法如下:Shell(Systempath&& &&& && regsvr32.exe /s /I"&  && MyControlName, vbHide)& &其中 Systempath 是 Regsvr32.exe 所在的路径,& MyControlName 是控件名字(包括路径)若要撤销,可以如下操作:Shell(Systempath&& &&& && regsvr32.exe /s /U"&& && MyControlName, vbHide)& &下面讨论注册但是未出现在工具箱( TOOLBOX )中的& Active X& 控件的情况,这其中也包括 VB 自带的一些 Active X 控件的使用。具体的方法就是利用 VBControlExtender 对象。 VBControlExtender 对象与 EventInfo 相结合能提供事件陷井捕捉,它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编程设计控件的事件,声明时若使用 WithEvents 关键字,则会有个特殊的事件 ObjectEvent(Info As EventInfo) ,它能捕捉到对象使用 RaiseEvent 产生的所有事件, EventInfo 数据结构[jie gou][shu ju jie gou]映射[ying she]了事件的名称、参数个数和参数的值。 VBControlExtender 和& EventInfo 相结合,采用 Select Case& 就可以预先将不同类对象的事件放置一起,各自独立[du li]运作。下面的例子是使用未在工具箱( TOOLBOX )中出现的 RichTextBox 的方法,其他的& Active X& 控件的使用方法与此类似:Dim WithEvents myControl As VBControlExtenderPrivate Sub Form_Load()Licenses.Add "RichText.RichTextctrl.1"Set myControl = Controls.Add("RichText.RichTextctrl.1", "mycontrol")myControl.Left = 0myControl.Visible = TrueEnd SubPrivate Sub myControl_ObjectEvent(Info As EventInfo)Select Case Info.NameCase "MouseDown"MsgBox "mousedown"Case Else&& 其他事件End SelectEnd Sub需要注意, Licenses.Add "RichText.RichTextctrl.1" 是响应[xiang ying]控件的对象编号在 VB 中的注册,若此控件已经出现在工具箱( TOOLBOX )中,则会出错。另外,若 Active X 控件已经出现在 TOOLBOX 中,需要动态建立控件,则应该作如下的处理:首先去掉 Licenses.Add "RichText.RichTextctrl.1" 这一句,然后,在&工程属性窗口[chuang kou]&的& Make &页面下,确保[que bao]& remove information about unused ActiveX controls &不被选中即可。还有,若 Active X 控件已经出现在 TOOLBOX 中,需要动态建立控件,还可以用类似于前面介绍的控件集合的方法,比如上面示范的 RichTextBox 的例子还可以如下实现(只是这种方法不再支持 ObjectEvent 事件):Dim WithEvents myControl As RichTextLib.RichTextBoxPrivate Sub Form_Load()Set myControl = Controls.Add("RichText.RichTextctrl.1", "mycontrol")myControl.Left = 0myControl.Visible = TrueEnd SubPrivate Sub myControl_Click()MsgBox "click"End Sub5 . 结束语 &通过以上对 Visual Basic 中的控件动态建立和删除进行了讨论,我们了解到控件数组& 适& 合于应用程序[ying yong cheng xu]中需要该控件,但需要控件实例的具体数量不定的情况;而控件集合则适合于为了完成不同的任务[ren wu],制作了多个不同功能的控件,在特定条件[tiao jian]下只需要一个或几个控件的情况对于 Active X 控件,若没有添加到 VB 工具箱中,当应用程序[ying yong cheng xu]执行时,可以根据需要由程序自动加载或者删除。总之,合理地选择[xuan ze]使用以上的各种方法,对于提高编程的效率和代码的运行效率都是大有裨益的。以上有关的代码都已在 Windows 2000 Professional& 和& Visual Basic 6.0& 企业版环境下测试通过。'//oooooooooooooooooooooooooooooooooooooooooooooooooooooo' 以下是完整的测试代码-------------- BY ZHJ'//ooooooooooooooooooooooooooooooooooooooooooooooooooooooOption ExplicitDim WithEvents mycontrol As CommandButton& '这句要放在全局定义Dim x1, y1Private Sub Command1_Click()&&& If isControlExists("mycontrol") = True Then: Exit Sub&&& Set mycontrol = Controls.Add("VB.commandButton", "mycontrol")&&& With mycontrol&&&&&&& .Caption = "可以拖动我看看!"&&&&&&& .Left = 100&&&&&&& .Width = 3000&&&&&&& .Visible = True&&& End WithEnd SubPrivate Sub Command2_Click()&&& If isControlExists("mycontrol") = False Then: Exit Sub&&& Controls.Remove "mycontrol"End SubPrivate Sub Command3_Click()&&& mycontrol_ClickEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)&&& Me.Caption = X & "," & YEnd SubPrivate Sub mycontrol_Click()&&& Dim obj As Object&&& Dim str&&& For Each obj In Controls&&&&&&& str = str & vbCrLf & obj.Name&&& Next&&& If isControlExists("mycontrol") = True Then&&&&&&& MsgBox str, , "你点击了我!"&&& Else&&&&&&& MsgBox str, , "控件已删除!"&&& End IfEnd Sub'//自定义函数,判断控件是否存在Function isControlExists(ctlName As String) As Boolean&&& Dim obj As Object&&& For Each obj In Controls&&&&&&& If obj.Name = ctlName Then&&&&&&&&&&& isControlExists = True&&&&&&&&&&& Exit Function&&&&&&& End If&&& Next&&& isControlExists = FalseEnd FunctionPrivate Sub mycontrol_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)&&& 'Me.Caption = X & "," & Y&&& If x1 & 0 And y1 & 0 Then&&&&&&& With mycontrol&&&&&&&&&&& .Left = .Left + (X - x1)&&&&&&&&&&& .Top = .Top + (Y - y1)&&&&&&& End With&&& End IfEnd SubPrivate Sub mycontrol_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)&&& x1 = X: y1 = YEnd SubPrivate Sub mycontrol_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)&&& x1 = IIf(x1 & 0, 0, x1)&&& y1 = IIf(y1 & 0, 0, y1)End Sub
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:782253次
积分:7689
积分:7689
排名:第2341名
原创:219篇
转载:25篇
评论:63条
文章:11篇
阅读:39488
(1)(3)(3)(2)(1)(1)(2)(6)(9)(1)(2)(5)(5)(1)(1)(1)(12)(5)(4)(7)(13)(2)(9)(4)(3)(17)(40)(11)(8)(13)(33)(19)【控件数组】VB6中怎么用代码实现添加控件数组?如题~我刚刚开始学VB,想用_牛宝宝文章网【控件数组】VB6中怎么用代码实现添加控件数组?如题~我刚刚开始学VB,想用专题:VB6中怎么用代码实现添加控件数组?如题~我刚刚开始学,想用VB6做一个&扫雷。可是我不会使用控件数组,不知道该怎么用代码实现呢?谢谢各位高手了!控件数组的动态建立设计窗体时建立控件组的第一个元素,并将其INDEX值赋为0程序运行中使用LOAD方法,定义新的控件组元素,语法:LOAD 对象名(INDEX)值使用UNLOAD方法可去除控件组中的元素。INDEX值为数值型,可使用变量控制对象名须与设计窗体时建立的第0个元素名相同新对象的属性值为默认值。转载请保留本文连接:分享到:相关文章声明:《【控件数组】VB6中怎么用代码实现添加控件数组?如题~我刚刚开始学VB,想用》由“三人约会”分享发布,如因用户分享而无意侵犯到您的合法权益,请联系我们删除。TA的分享6674人阅读
vb 知识的 学习(3)
一.运行中设置数组控件的属性
设窗体上有若干个以 Command1 命名的命令按钮,现要求:点击其中一个按钮后,该按钮不可用,而其它的按钮均可用。以下几行代码可以实现这个要求,比一个一个的设置高效得多。
Private Sub Command1_Click(Index As Integer)
Dim i As Integer '计数器
Dim comNum As Integer '按钮的索引号
comNum = 0
For i = 0 To Command1.Count - 1
comNum = comNum + 1
If comNum & Command1.Count - 1 Then comNum = 0
Command1(comNum).Enabled = True '让所有按钮可用
Command1(Index).Enabled = False '让被单击按钮不可用
二、运行中添加和卸载数组控件
窗体上已有一个文本框Text1,程序需要在运行时动态地创建若干文本框,可这样实现:
1.首先,设计时给Text1的Index属性设置为&0&,这一步很重要:有了索引号才能创建数组控件;
2.编写代码:[之前请给工程添加两个命令按钮,Name属性取缺省值,Caption属性分别为:添加、卸载]
Private Sub Command1_Click()
Dim txtNum As Integer 'Text1的Index号
Dim Num As Integer '赋给各TextBox的值
txtNum = 0 '初值
Num = 1 '初值
Text1(0).Text = &Text& & Num '第一个Text1的值
Dim i As Integer '计数器
For i = 0 To 4 '添加五个TextBox
txtNum = txtNum + 1
Num = Num + 1
Load Text1(txtNum) '加载文本框
Text1(txtNum).Top = Text1(txtNum - 1).Top + 450 '设置位置
Text1(txtNum).Text = &Text& & Num '加载内容
Text1(txtNum).Visible = True '令其可见:不能漏
Command1.Enabled = False
Command2.Enabled = True
Private Sub Command2_Click()
Dim i As Integer, N As Integer
For i = 1 To Text1.Count - 1
Unload Text1(N)
Command1.Enabled = True
Command2.Enabled = False
三、给运行中添加的数组控件命名并编写事件
其实例二已经给数组控件命了名,只是简单了些。本例将文件夹&F:\Txt&下的所有.txt的文件名作为菜单的Caption添加到菜单项里[请事先建立此文件夹并拷贝一些.txt文件,或者更改代码],当点击这些菜单,程序将调出Windows的记事本打开相应的文件。
键入以下代码前请启动VB的菜单编辑器,建立一个父菜单项[Naem和Caption属性任意],然后在此父菜单下建立一个子菜单,Name属性为&mnuFiles&,Caption属性为&没有文件&。
Dim MyPath As String '路径名变量
'添加并命名菜单过程
Private Sub AddMenu()
Dim MenuNum As Integer '菜单索引号变量
Dim MyFiles As String '文件名变量
MenuNum = 0 '初值
MyFiles = Dir(MyPath + &*.txt&) '仅查找文本文档
If MyFiles = && Then Exit Sub '为空则退出过程
mnuFiles(0).Caption = MyFiles '给第一个菜单命名
Do Until MyFiles = &&
MyFiles = Dir()
If MenuNum = 0 Then MenuNum = 1
MenuNum = MenuNum + 1
Load mnuFiles(MenuNum) '加载菜单
mnuFiles(MenuNum).Visible = True '设置为可见:不能漏
mnuFiles(MenuNum).Caption = MyFiles
If mnuFiles(MenuNum).Caption = && Then Unload mnuFiles(MenuNum)
'若菜单名为空则卸载掉
Private Sub Form_Load()
MyPath = &F:\Txt\& '规定路径
Call AddMenu '执行添加菜单过程
Private Sub mnuFiles_Click(Index As Integer)
Dim ret As String
'用Windows的记事本打开文件:注意中间的空格不能少
ret = &Notepad.exe& & & & & MyPath & mnuFiles(Index).Caption
Shell ret, vbNormalFocus
四、控件在窗体上的排列问题
当然添加的数组控件多了,排列确实是个问题。下面的例子给窗体添加499个Label控件,加上事先绘制好的Index号定义为0的控件,总共有500个,能在窗体上从左到右、从上到下整齐地排列。程序运行时要花些许时间。
Option Explicit
Private Sub Form_Load()
Me.Width = 6800
Me.Height = 6000
Me.Caption = &添加标签演示&
With Label1(0)
.Left = 120
.Height = 200
.Width = 300
.Caption = &&
Private Sub AddLabels()
Dim i As Integer '计数器
Dim Num As Integer 'Label的Index号
Dim k As Integer '判断是否满行
Dim n As Integer '行数计数器
Label1(0).Caption = Num + 1
For i = 1 To 499
Num = Num + 1
Load Label1(Num) '加载Label控件
Select Case k
Label1(Num).Left = Label1(Num - 1).Left + Label1(0).Width + 20
If Num = 20 Then n = n + 1: k = n
Label1(n * 20).Left = 120
Label1(n * 20).Top = Label1(0).Height * n
Label1(Num).Top = Label1(0).Height * n
Label1(Num).Left = Label1(Num - 1).Left + Label1(0).Width + 20
If Num = (n + 1) * 20 Then n = n + 1: k = n
End Select
Label1(Num).Caption = Num + 1
Label1(Num).Visible = True
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:393570次
积分:7636
积分:7636
排名:第2371名
原创:103篇
评论:1958条
(2)(3)(2)(3)(4)(7)(2)(6)(2)(5)(4)(4)(3)(4)(7)(9)(3)(5)(5)(3)(4)(9)(7)(2)(1)

我要回帖

更多关于 5000左右的台式机配置 的文章

 

随机推荐