`
sjk2013
  • 浏览: 2186568 次
文章分类
社区版块
存档分类
最新评论

VB控件数组之操作技巧

 
阅读更多

一.运行中设置数组控件的属性

设窗体上有若干个以 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 '让所有按钮可用
Next
Command1(Index).Enabled = False '让被单击按钮不可用

End Sub


二、运行中添加和卸载数组控件

窗体上已有一个文本框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 '令其可见:不能漏
Next

Command1.Enabled = False 
Command2.Enabled = True

End Sub

Private Sub Command2_Click()

Dim i As Integer, N As Integer
N = 0
For i = 1 To Text1.Count - 1
N = N + 1
Unload Text1(N)
Next

Command1.Enabled = True
Command2.Enabled = False

End Sub


三、给运行中添加的数组控件命名并编写事件

其实例二已经给数组控件命了名,只是简单了些。本例将文件夹"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)
'若菜单名为空则卸载掉
Loop

End Sub

Private Sub Form_Load()

MyPath = "F:\Txt\" '规定路径
Call AddMenu '执行添加菜单过程

End Sub

Private Sub mnuFiles_Click(Index As Integer)

Dim ret As String
'用Windows的记事本打开文件:注意中间的空格不能少
ret = "Notepad.exe" & " " & MyPath & mnuFiles(Index).Caption
Shell ret, vbNormalFocus

End Sub


四、控件在窗体上的排列问题
当然添加的数组控件多了,排列确实是个问题。下面的例子给窗体添加499个Label控件,加上事先绘制好的Index号定义为0的控件,总共有500个,能在窗体上从左到右、从上到下整齐地排列。程序运行时要花些许时间。

Option Explicit

Private Sub Form_Load()

Me.Width = 6800
Me.Height = 6000
Me.Caption = "添加标签演示"
With Label1(0)
.Top = 0
.Left = 120
.Height = 200
.Width = 300
.Caption = ""
End With

AddLabels

End Sub

Private Sub AddLabels()

Dim i As Integer '计数器
Dim Num As Integer 'Label的Index号
Dim k As Integer '判断是否满行
Dim n As Integer '行数计数器

Num = 0
k = 0
n = 0

Label1(0).Caption = Num + 1

For i = 1 To 499
Num = Num + 1
Load Label1(Num) '加载Label控件

Select Case k 
Case 0
Label1(Num).Left = Label1(Num - 1).Left + Label1(0).Width + 20
If Num = 20 Then n = n + 1: k = n

Case 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
Next

End Sub 


分享到:
评论

相关推荐

    VB使用控件数组的演示.rar

    VB使用控件数组的演示,控件数组能大大减化VB6.0的工作量,因此是我们有必要掌握的一个VB技巧。运行窗口后,点击按钮,即可生成控件数组,并按照设置自动循环相应内容。若要参考控件数组的核心文件,请下载源码后...

    精彩编程与编程技巧-动态加入控件到VB控件数组中...

    精彩编程与编程技巧-动态加入控件到VB控件数组中 ...

    VB开发经验技巧宝典

    第4章 数组与指针 第5章 函数和过程 第6章 字符及字符串处理技术 第7章 日期和时间 第8章 数据处理技术 第9章 窗体与界面设计 第10章 系统对象及其应用 第11章 控件技术 第12章 键盘与...

    可视化程序设计(VB)课件_东北大学

    掌握数组(静态数组、动态数组)的概念、基本操作、应用,以及控件数组。 (二) 重点与难点 (1) 基本语句、选择结构、循环结构; (2) 数组。 (三) 教学内容 (1) 数据类型; (2) 常量与变量; (3) 基本语句; (4) ...

    四则运算的简单计算器

    vb程序设计技巧中的控件数组的应用,select case 分支结构的掌握

    零基础学VB_2 (有点大分成两部分)

     全书共分23章,内容涵盖了VisualBasic6.O各方面的知识,包括开发环境介绍、获取帮助信息的方法、基础语法、窗体控件、高级ActiVex控件、数组、键盘鼠标事件、菜单、工具栏和状态栏的设计、文件处理技术、sQL语言...

    魔兽争霸窗口自定义运行工具源码VB版.rar

    魔兽争霸窗口化运行工具,可自动重新调整游戏窗口大小,自动隐藏程序本身,自动开始游戏(实现全自动);当游戏关闭后,程序会自动退出。... 7、好多控件数组(这个添加数量的)  8、xp界面化(还是添数的)

    VB专业版循序渐进教程

    第 1 课到第 24课分别介绍:使用控件、菜单和对话框,Visual Basic 变量和运算符,使用条件分支结构,运用循环和定时器,使用窗体、打印机和错误处理程序,使用模块过程、集合与数组,管理 Access 数据库,连接 ...

    Visual Basic 6编程技术大全 中译本扫描版带书签 2/2

    3.11.2迭代控件数组中的项目98 3.11.3菜单项数组98 第4章变量与过程100 4.1变量的作用域和生存期100 4.1.1全局变量100 4.1.2模块级的变量101 4.1.3动态局部变量102 4.1.4静态局部变量102 4.2内置数据类型概述103 ...

    Visual Basic 6编程技术大全 中译本扫描版带书签 1/2

    3.11.2迭代控件数组中的项目98 3.11.3菜单项数组98 第4章变量与过程100 4.1变量的作用域和生存期100 4.1.1全局变量100 4.1.2模块级的变量101 4.1.3动态局部变量102 4.1.4静态局部变量102 4.2内置数据类型概述103 ...

    VB编程资源大全(源码 数据库)

    (33KB) 30,d027_zm027.zip 一个简易的ACCESS的源程序,用到了很多操作数据库的技巧,Cool(128KB) 31,d026_binaryDB.zip 一定要用微软的数据引擎吗?一定要承受巨大的 DLL 文件?本程序说:No (11KB) ...

    零基础学VB_1 (有点大分成两部分)

     全书共分23章,内容涵盖了VisualBasic6.O各方面的知识,包括开发环境介绍、获取帮助信息的方法、基础语法、窗体控件、高级ActiVex控件、数组、键盘鼠标事件、菜单、工具栏和状态栏的设计、文件处理技术、sQL语言...

    非Access数据库在VB中的编程及应用

    本文从使用数据库存取对象变量的方法出发,实现了非Access格式数据库(以FoxPro数据库为例)的建新库、拷贝数据库结构、动态调入等操作,阐述了从编程技巧上弥补VB对这些外来数据库支持不足的可行性 。 一 、 VB...

    vb学生成绩管理系统

     理解面向对象的软件设计基本理论,学习VB软件设计的基本方法,熟悉一般软件项目开发的基本步骤,培养运用VB解决实际问题的能力和技巧。 课程设计的主要内容和要求(包括原始数据、技术参数、设计要求、工作量要求...

    VB2008应用程序开发实例精讲(光盘文件)

    第2~6篇为VB 2008专题应用程序开发实例,通过19个专题领域实例,详细深入地介绍了VB 2008各种领域的应用开发技术和技巧,具体包括:数据库应用开发实例、网络与通信开发实例、多媒体应用开发实例、图形图像处理实例...

    Visual.Basic.6大学教程.pdf

    7.9 控件数组 203 7.10 动态数组 205 7.11 变长参数表:ParamArray 211 7.12 Array函数 212 小结 213 自测练习 214 自测练习答案 214 练习 215 第8章 字符串、日期和时间 224 8.1 简介 224 8.2 字符与字符串基础知识...

    java源码包2

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

Global site tag (gtag.js) - Google Analytics