vb控件数组
第7章 VB数组

只要组中有一元素,就会进入For Each块执行。一旦进入循
环,便先针对组中第一个元素执行循环中的所有语句。若组 中还有其它的元素,则会针对它们执行循环中的语句,当组 中的所有元素都执行完了,则会退出循环,然后从Next语句 之后的语句开始继续执行。 可以将一个For Each…Next循环放在另一个之中来组成嵌套。 但每个循环的元素必须是唯一的。若省略Next语句中的元素, 就像元素存在时一样执行。若Next语句在它相对应的For语 句之前出现,则会产生错误。
3. 对上述过程重复,直至剩下一个元素。
因此,要用到双重循环,外循环控制比较轮数,内循环控 制每轮的比较次数。
如: 8, 4, 20, 100, 28, 1, 第1轮: 8, 4, 20, 100, 28, 1 4, 8, 20, 100, 28, 1
用选择法程序
两次 交换 1, 8, 20, 100, 28, 4
flag,在进行每趟比较前将flag置成0,如果在比较中发生了数
据交换,则将flag置为1,在每一趟结束后,再判断flag,如果 它仍为0,则表示在该趟比较中未发生一次数据交换,排序结 束;否则进行下一趟比较。 用冒泡法程序(优化) P87例7-2示例程序
用比较排序法程序
7.3.2 选择法排序(从大到小排列)
算法介绍:排序的较多算法中,一种最简单的算法–––选择排序
法用得较多。基本思路: 设有n个数,需将它们从小到大顺序排列。
则: 1. 从n个元素中,通过比较,找出最小元素,放在第一个位置上。 2. 在剩下的n –1个元素中,找出第二小的元素并把它放在第二 个位置上。
P89例7-3示例程序
7.3.3 冒泡法排序(从大到小排列)
算法介绍:两两比较待排序序列中的元素,并交换不满足顺序
vb控件数组的使用

vb控件数组的使用VB控件数组是在Visual Basic开发环境中用于处理大量相似控件的一种技术。
通过创建控件数组,可以方便地对一组控件进行集成处理,从而提高代码效率。
下面将详细介绍控件数组的使用及其注意事项。
1、控件数组的声明与初始化在VB中,声明控件数组与普通变量的方法类似。
通过使用Dim语句,在程序代码中声明一个控件数组,例如:Dim myButton(10) as CommandButton这里创建了10个命令按钮的数组,可以直接操作数组元素,如:myButton(0).Caption="Button1"myButton(1).Caption="Button2"当然,你也可以使用For循环结构来初始化数组中的控件,如下所示:For i = 0 To 10Set myButton(i) = Controls.Add("mandButton", "Button" & i)myButton(i).Top = i * 25Next i上述代码使用For循环在窗体上添加了11个按钮,并将它们的Top 属性依次设置为0、25、50、75……。
2、控件数组的处理方法通过使用控件数组,可以对具有相同事件处理程序的一组控件进行集成处理。
比如,你可以使用For循环结构为这些控件注册事件,代码如下:For i = 0 To 10Set myButton(i) = Controls.Add("mandButton", "Button" & i)myButton(i).Top = i * 25AddHandler myButton(i).Click, AddressOf Buttons_ClickNext iPrivate Sub Buttons_Click()MsgBox "Clicked"End Sub这里,我们将11个按钮的Click事件都绑定到Buttons_Click事件处理程序,当任何一个按钮被单击时,都会产生一个被处理的事件。
VB程序设计第2版教学课件55控件数组

2
控件数组建立方法
【控件数组的建立方法】
【方法1】利用为控件数组命名方法建立控件数组
① 在窗体上添加同一类型的多个控件。如:Text1、Text2…… ② 单击Text2,使其处于选定状态。 ③ 在属性窗口选择“名称”,即Name属性, 并修改控件名称,即:Text1,显示对话框, 单击“是”,则建立控件数组。 ④ 对要加到数组中的控件重复第②、③步, 输入与第③步相同的名称。
10个元素,随机产生10个3位整数放入控件数组Text1中,重新排 列这10个数,将其中的奇数放在前,偶数放在后,重排后的数据 放入Text2中。
界面设计
3
动态数组应用
代码设计
Dim n As Integer
Private Sub Command1_Click()
Dim i%
Randomize
n=0
2
【说明】
控件数组说明
① 控件数组建立后,只要改变一个控件的“名称”属性,即Name属 性,并将Index属性置为空(不是0),则该控件从控件数组中删除。 ② 建立了控件数组之后,控件数组中所有控件触发同一事件过程,由 事件过程根据不同的Index值执行不同的操作。
3
动态数组应用
【应用】建立2个数组控件Text1、Text2,每个数组控件具有
For i = 0 To 9
Text1(i).Text = Int(100 + Rnd * 900)
If Text1(i).Text Mod 2 <> 0 Then
n=n+1
Байду номын сангаас
'统计奇数个数
End If
Next i
End Sub
浅谈VB中的控件数组及其应用

界 面主 要足 由一 个 Fa e 件 和 1 r 控 m 5个命 令按 建 控件 数 组组成 。下 面重 点介 绍命 令按 钮 控件 数组 的创 建 方法 。 创 建命 令 按钮 控 件 数组 , 以在 设 计 时创 建 , 可 以在 运 可 也
行 时创 建 。 为 了方便起 见 . 文在 设计 时创 建 。 但 本 设计 时创 建 有二 种方 法 。第 一 种方 法 : 复制 已有 的命 令 按钮 控件 数 组 并将 其粘 贴 到窗体 上 。具 体操 作 步骤 为 :) 1 先在 窗体 的
Vo . . I5 No3
Ma 2 用
钟 绍 辉
( 沙洋师范专科 学校 计算机科 学与技 术系, 湖北 沙洋 480) 420
摘要 :控件数 组” V 6 “ 是 B. 0中一项 简单而 实用的技 术 , 通过 对控件 的简单拷 贝 、 贴 , 者 可以建立一 组 粘 开发 控件 , 些控件 具有相 同的类型和名称 , 这 共享事件集 。程 序开发 中利用该控件 可以优化代码 。
结束或进行新一轮游戏 ;1 5 如果不成功 , 重复 15步。经 —
分 析可 知 .要 编 写 的代 码并 不 复 杂 。但 如果 不用 控 件 数 组 。 用 1 命 令 按 钮 , 每 个 命 令 按 钮 都 要 编 写 一段 而 5个 则 相 似 的代 码 . 每 个 按钮 在 移动 时 很难 对 其 进行 定 位 , 且 但
控件数组是vb60中一项简单而实用的技术通过对控件的简单拷贝粘贴开发者可以建立一组控件这些控件具有相同的类型和名称共享事件集
维普资讯
第 5卷 第 3期 20 年 5 月 06
襄樊 职 业 技 术 学 院 学 报
J un l fX a ga c t n la dT c nc l olg o ra in fnVo ai a n e h ia l e o o C e
VB控件数组的操作技巧

VB控件数组的操作技巧控件数组有在设计时设置好的,也有在运行中创建的。
控件数组一方面使得程序简洁、令代码易于维护,另一方面能使程序具有灵活性。
可见,科学地利用控件数组可使编程工作的效率更高。
本文是从笔者回答网友的问题中整理出来的,与原来的回答相比略有改动。
希望这些"技巧"对大家有些帮助。
如有不妥之处,敬请指教。
一、运行中设置数组控件的属性设窗体上有若干个以 Command1 命名的命令按钮,现要求:点击其中一个按钮后,该按钮不可用,而其它的按钮均可用。
以下几行代码可以实现这个要求,比一个一个的设置高效得多。
Private Sub Command1_Click(Index As Integer)Dim i As Integer '计数器Dim comNum As Integer '按钮的索引号comNum = 0For i = 0 To Command1.Count - 1comNum = comNum + 1If comNum > Command1.Count - 1 Then comNum = 0Command1(comNum).Enabled = True '让所有按钮可用NextCommand1(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 '添加五个TextBoxtxtNum = txtNum + 1Num = Num + 1Load Text1(txtNum) '加载文本框Text1(txtNum).Top = Text1(txtNum - 1).Top + 450 '设置位置Text1(txtNum).Text = "Text" & Num '加载内容Text1(txtNum).Visible = True '令其可见:不能漏NextCommand1.Enabled = FalseCommand2.Enabled = TrueEnd SubPrivate Sub Command2_Click()Dim i As Integer, N As IntegerN = 0For i = 1 To Text1.Count - 1N = N + 1Unload Text1(N)NextCommand1.Enabled = TrueCommand2.Enabled = FalseEnd Sub三、给运行中添加的数组控件命名并编写事件其实例二已经给数组控件命了名,只是简单了些。
vb 控件属性 数组解决办法

Vb 属性接口数组解决办法前不久制作Activex 控件,自定义接口成员,本来想通过外界传递数组给控件,但是我没有找到设置接口成员属性为数组的方法(我是个VB初学者,直到目前也没有找到方法)。
后来发现vb中字符串长度可以存放多达2亿个字符。
想到了将数组转换为字符串然后用字符串转换为数组的方法。
整体思路:在控件外接程序中将数组生成字符串,在控件里面将得到的字符串转换为数组完成数组的传递。
举例详细代码如下宿主程序中按钮Command1单击触发以下函数运行:第一个For 循环生成x(0 to 50),y(0 to 50)两个数组。
a,b为两个字符串,其第一个字符(数字形式)存放数组元素数目一共从0到50,有51个元素。
Str()指令是将数字转换为字符数字,比如将51转换为“51”。
第二个For循环将a,b两个字符串不断的添加字符(数字转换为字符形式,采用&连接,中间用逗号隔开)。
从而a,b字符串分别是“51,0,1,2,3……,50”和“51,627.5 578.5 531.5 486.5……627.5”控件的名称为ctr,为其设置了三个属性接口sn(布尔型) snx(字符串)sny(字符串)。
其中snx,sny分别用于承接外界传递的字符串,Sn为某个位(与该主题无关,在控件中指示另外某个事件的)Private Sub Command1_Click()Dim cd As IntegerDim x() As DoubleDim y() As Doublecd = 50ReDim x(cd)ReDim y(cd)For i = 0 To cd Step 1x(i) = iy(i) = (i - 25) ^ 2 + 2.5Next iDim a As StringDim b As Stringa = Str(cd + 1)b = Str(cd + 1)For i = 0 To cd Step 1a = a & "," & Str(x(i))b = b & "," & Str(y(i)) Next ictr.sn = Truectr.snx = actr.sny = bEnd Sub控件中程序字符串处理代码Private Sub zhunhuan()Dim xa() As DoubleDim ya() As DoubleDim af2() As StringDim af3() As Stringaf2 = Split(m_snx, ",")af3 = Split(m_sny, ",")Dim cd As Integercd = Int(Val(af2(0))) ReDim ya(cd - 1)ReDim xa(cd - 1)For i = 0 To (cd - 1) Step 1 xa(i) = Val(af2(i + 1)) Next iFor i = 0 To (cd - 1) Step 1ya(i) = Val(af3(i + 1))Next iEnd Sub上述代码split函数将字符串剥离成一个数组从而af2(),af3()中存放字符即af3()中af3(0)为“51” af3(1)为“627.5” af3(2)为“578.5”For循环中Val(af3(i + 1))将af3(i + 1)中元素由字符转换为数字即af3(1)由“627.5”变换成为627.5 从而完成了整个数组由宿主程序往控件的传递。
VB基础教程:第五章第五节控件数组

5.5 控件数组
1.控件数组的概念
控件数组是由⼀组相同类型的控件组成的,它们共⽤⼀个控件名,具有相同的数组。
控件数组适⽤于若⼲个控件执⾏的操作相似的场合,控件组共享同样的事件过程。
控件数组通过索引号(属性中的Index)来标识各控件,第⼀个下标是0 。
如:Text1(0)、Text1(1)、Text1(2)、Text1(3)……
2.控件数组的建⽴
(1)在设计时建⽴
步骤:1)在窗体上画出某控件,并进⾏属性设置。
2)选中该控件进⾏“复制”和“粘贴”操作,系统提⽰“是否建⽴控件数组”,选择是即可。
多次粘贴就可以创建多个控件元素。
3)进⾏事件过程的编程。
(2)运⾏时添加控件数组
⽅法:1)在窗体上画出某控件,设置该控件的Index值为0,表⽰该控件为数组。
2)在编程时通过Load⽅法添加其余若⼲个元素,也可以通过Unload删除某个添加的元素。
3)每个添加的控件数组通过Left 和Top属性,确定其在窗体上的位置,并将Visible设置为True。
使⽤⽰例:建⽴⼀个类似国际象棋的棋盘,要求⿊⽩交替,运⾏时单击某个棋格,会改变颜⾊并显⽰其序号。
使用控件数组(VB6)

使用控件数组(VB6高级编程)(福哥录入)控件数组是一组具有共同名称和类型,且事件过程也相同的控件。
一个控件数组至少应有一个元素,元素数目可在系统资源和内存允许的范围内增加;数组的大小也取决于每个控件所需的内存和windows 资源。
在控件数组中可用的最大索引值为32767。
同一控件数组中的元素有自己的属性设置值。
常见的控件数组包括实现菜单控件和选项按钮分组。
在设计时,使用控件数组添加控件所消耗的资源比直接向窗体添加多个相同类型的控件所消耗的资源要少。
当希望若干控件共享代码时,控件数组也很有用。
例如,如果创建了一个包含三个选项按钮的控件数组,则无论单击那个按钮时都将执行相同的代码。
若要在运行时创建新控件,则新控件必须是控件数组的成员。
使用控件数组时,每个新成员继承数组的共享事件过程。
没有控件数组机制是不可能在运行时创建新控件的,因为全新控件不具有任何事件过程。
控件数组解决了这个问题,因为每个新控件都继承为数组编写好的事件过程。
例如,如果窗体上有若干文本框,而且每个文本框都接受一个日期数值,则可创建一个控件数组,使所有文本框共享一个合法性检查代码。
1、设计时创建控件数组设计时有三种方法创建控件数组:(1)将相同名字赋予多个控件。
(2)复制现有的控件并将其粘贴到窗体上。
(3)将控件的Index 属性设置为非Null数值。
可以通过改变控件名称添加控件数组元素,步骤如下所示:(1)绘制控件数组中要添加的控件(必须为同一类型的控件)。
决定哪一个控件作为数组中的第一个元素。
(2)选定控件并将其Name 设置值变成数组第一个元素的Name 设置值。
(3)在数组中为控件输入现有的名称时,VisualBasic 将显示一个对话框,要求确认是否要创建控件数组。
此时选择“确定”按钮确认操作。
例如,若控件数组第一个元素名称为cmdCtlArr,则选择一个CommandButton将其添加到数组中,并将其名称设置为cmdCtlArr,此时,将显示这样一段信息:“已经存在名为‘cmdCtlArr’的控件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Public Number(5) As Integer Public Price(20) As Double 第一个是声明了一个有6个元素的数组,其索引值为0~5;第二个是声明 了一个有21个元素的数组,其索引值为0~20。 说明: (1)数组名的命名规则与简单变量的命名规则相同。 (2)数组声明要考虑其作用域,也就是应用的有效范围,原则上“谁定义 ,谁使用”。 (3)如果省略<类型>,将按Variant处理。如果数组的数据类型可以确定, 最好不要省略<类型>。 (4)<维数说明>指定数组的维数以及各维的范围,为了规定下界,用关键 字To显式提供下界(为Long数据类型)。 定义格式为: [<下标下界1> To] <下标上界1> [,<下标下界2> To] <下标上界2>]… 如果没有使用to显式指定下标下界,则可以用Option Base {0|1}语句控制下 界。例如,当n为1时,缺省下界为1,下界为1的情况会经常用到。当n为0时, 就是缺省下界为0,此时Option Base 语句可省。
Private Sub Command2_Click() Dim max As Integer, min As Integer Dim s As Integer, m As Single min = 100: max = 10: s = 0 For i = 1 To 10 If a(i) > max Then max = a(i) If a(i) < min Then min = a(i) s = s + a(i) Next i m = s / 10 Text1.Text = max Text2.Text = min Text3.Text = m End Sub
【例6-2-2】求n个两位数的极值、平均值、方差和标准差。 建立程序用户界面与设置相应的对象属性,如图6-2-1。
程序代码如下: Dim a(1 To 10) As Integer Private Sub Command1_Click() Form_Load Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" End Sub
返回目录
6.1.2
数组的概念
数组是由一系列具有相同变量名、相同数据类型的下标变 量构成的有序排列。把一组具有相同一名字,不同下标的 下标变量称为数组。 例: a(1)、a(2)、a(3)、a(4)、a(5)。 变量名就是数组名,每个下标变量称为该数组的一个数组 元素。 数组的数据类型也就是该数组包含的下标变量的数据类型。 在Visual Basic中,可以声明任何基本数据类型的数组, 包括用户自定义类型和对象变量,但是一个数组中的所有 元素应该具有相同的数据类型,只有当数据类型为变体类 型(Variant)时,各个元素能够包含不同类型的数据。
返回目录
例如: Dim Num(1 To 15) As Integer ' 索引值为1~15 Dim Price(10 To 20) As Double ' 索引值为10~20 Dim grade(1 To 50,3) as single „ 声明包含50×4个元素的二 维数组
数组定义中需要注意的问题:
图6-2-2 统计界面
Private Sub Command3_Click() Unload Me End Sub Private Sub Form_Load() Dim p As String Randomize p = "" For i = 1 To 10 a(i) = Int(Rnd * 90) + 10 p = p & Str(a(i)) & "," Next Label4.Caption = LTrim(Left(p, Len(p) - 1)) End Sub
在 数 学 上 , 我 们 可 以 用 一 串 有 序 的 数 据 a1 、 a2 、 a3、…ai、…、a100来处理100个学生的某门课程的成绩,简 化为{ai}表示,这是一组类型相同的数据,每个数据在其中 的顺序位置是一定的,我们把i(=1,2, 3,…,100)称为下标。 在Visual Basic中,由于程序写在一行上,而且字符一 样大小,所以下标要放在小括号内。例如,上面的数据可表 示为 a(1) 、 a(2) 、 a(3) 、 … 、 a(i) 、 … 、 a(100) , 在 Visual Basic中,我们把每一个a(i)都叫做下标变量。下标 变量的一般格式为:a(i)。其中a是变量名,i是下标。
第6章
6.1 6.2 6.3 6.4 6.5
数组
数组的概念 固定数组 动态数组 For Each … Next循环 控件数组 习题
6.1 数组的概念 下标变量 数组的概念 数组的维数 数组元素的存放 数组的形式
6.1.1 6.1.2 6.1.3 6.1.4 6.1.5
返回目录
6.1.1 下标变量
(1)同一过程中,数组名与变量名不能同名。
(2)定义数组时,元素个数必须是常数,不能是变量或表达 式。如DIM a(n+5) 错。
如果在运行过程中定义数组可用以下方法解决用redim定义。 用redim语句定义。 如:n = Inputbox(“输入n的值”) redim a(n+5)
(3)数组类型除在AS子句中给出外,也可通过类型说明符指定
返回目录
6.1.3 数组的维数
如果一个数组的元素只有一个下标,则称这个数 组为一维数组。 也就是说,用一个下标便可以确定各个数组元素在 数组中的位置。 如果数组中的元素,必须用两个下标才能确定所 处的位置,这样的数组称为二维数组。 例如:有50个学生,每个学生有2门课程的成绩, 则这些成绩可以用二维数组来表示,第i个学生第j 门课程的成绩可以用a(i,j)表示。其中 i(=1,2, 3,…,50)称为行下标, j(=1,2)称为列下标。 返回目录
返回目录
6.2
固定数组
固定数组也称为固定大小的数组,是指 数组元素的个数固定不变的数组。
6.2.1 6.2.2 6.2.3
数组的声明 数组的应用 字符串数组返回目录6.2.1 数组的声明
数组的声明应该包括以下信息: 数组名、维数、大小、类型以及作用范围。 有三种方法声明固定数组。 (1)建立公用数组,在模块的通用声明段中用Public语句声明数组。格式为: Public 数组名(<维数说明>)[As <类型>] (2)建立模块级数组,在模块的通用声明段用Private语句声明。格式为: Private| Dim 数组名(<维数说明>)[As <类型>] (3) 建立局部数组,在过程中用Private 语句声明数组。格式为: Dim | Private 数组名(<维数说明>)[As <类型>] 例如:下列数组声明可以出现在模块的通用声明段或过程中。 Dim Number(5) As Integer Dim Price(20) As Double 为建立公用数组,直接用Public取代Dim。
对于二维数组则通过双重循环输入,其中外围循环控制行数, 内层循环控制每行元素个数。 例:向一个二维数组输入数据。 对一维数组,用一个循环可完成,与输入过程一样,对二维数 组则可用双重循环,输出时注意打印格式,如:
Dim a(4, 4) As Integer For I = 1 To 4 For j = 1 To 4 a(I, j) = I * j Next j Next I „给数组元素赋值 For I = 1 To 4 Print Tab(5); For j = 1 To 4 Print a(I, j); " "; Next j Print Next I „输出各数组元素值
6.2.2 数组的应用
1. 一维数组的应用 一维数组元素只有一个下标,只要下标值确定,元素在数组中的位置也就确定了。数 学上形如数列{ai}表示的数据均可用一维数组来处理。 【例6-2-1】使用数组计算1+2+3+…+100的值 Option Base 1 ' 设置下界自动为1 Private Sub Command1_Click() Dim a(100) As Integer Dim s As Integer For i = 1 To 100 a(i) = i ' 数组的产生 Next i s = 0 ' 累加器初始化 For i = 1 To 100 s = s + a(i) Next i Print "1+2+3+…+100="; s End Sub
关于下标变量的规定: (1)下标变量在程序中的用法和简单变量的用法一样。 (2)由于程序必须写在一行上,而且字符一样大小, 所以下标要放在小括号内,如a(3)不能写成 a3, 后者将被当作简单变量处理。 (3) 下标可以是常数、数值变量、算术表达式甚至下 标变量。下标中如含有变量,使用前应给该变量提 前赋值。例如:当i=5时,a(i)表示a(5),a(i+3) 表示a(8);如果b(3)=5,则a(b(3))表示a(5)。 (4)下标变量的下标值应该为整数,否则计算机将对 下标进行自动取整。如a(3.2)将被视为a(3) ,a(3.7)将被视为a(-4)。
如:Dim a%(5), b!(6) Dim a(5) as Integer ,Dim b(6) as Single (4)数组的下界必须小于上界。 测试上界或下界用以下函数。
LBound(数组[,维])
Ubound(数组[,维]) 例:DIM a(4)
返回值为数组的上界
返回值为数组的下界