如何vb中动态添加控件

如何vb中动态添加控件,第1张

VB6有一个新功能,可以动态添加控件,不用控件数组:

object.Add

(ProgID,

name,

container)

参数说明

Object

必需的。一个对象表达式,其值是“应用于”列表中的一个对象。

ProgID

必需的。一个标识控件的字符串。大多数控件的

ProgID

都可通过查看对象浏览器来决定。控件的

ProgID

是由控件的库和类组成的。

例如,CommandButton

控件的

ProgID

VB.CommandButton。在ProgID

与对象浏览器中所显示的不一样的情况下,Visual

Basic

将显示一个包括正确

ProgId

的错误信息。

name

必要的。一个字符串,用来标识集合的成员。

container

可选的。一个对象引用,它指定控件的容器。如果没有指定或为NULL,缺省值为

Controls

集合所属的容器。通过指定该参数,可以把一个控件放置在任何现存的容器控件(如

Frame

控件)中。用户控件或

ActiveX

文档也可以作为一个容器。

举例:

//在picture1上面添加一个commandbutton

Private

Sub

Form_Load()

Form1.Controls.Add

"VB.CommandButton",

"cmdOk",

Picture1

With

Form1.cmdOk

.Visible

=

True

.Width

=

500

.Caption

=

"确认(&Y)"

End

With

End

Sub

当然,我个人觉得更好的办法还是用控件数组,例如现在首先建立一个TextBox控件,并把Index属性改成0(注意,原来是空的,必须写上0)。

然后在程序中任意地方,采用例如Load

TextBox1(1)就可以创建一个新的TextBox对象,通过TextBox1(1)访问。

当然你可以用循环创建指定数量的文本框,在不用的时候记得用

Unload

TextBox1(1)给他注销掉。

其实也不是很难,给你一个框架,作为参考吧。

具体的也只有你自己进行完善。

' 先在窗体上添加一个标准按钮

' 在属性窗口中,把它的 Index属性设置成 0

'        名称改为 cmdDynCmd (其它的名称也行,注意后面的说明)

'        Visible 可以设置成 False

Option Explicit

Private lCmdIndex As Long

Private Sub LoadCmdButton()

'这儿就是加载动态按钮的

   Dim i&

   For i = 0 To NNN   '这儿NNN等于你需要的按钮数减1,可以用变量的

   '你应该能通过你的“数据库中"a"表中"名称"字段”项目数 来确定值为多少

   ' *** 注意这儿的 cmdDynCmd 就是设计时确定的按键名称 ***

      If (lCmdIndex > 0) Then Load cmdDynCmd(i)

      cmdDynCmd(i).Visible = True

      '这儿的 Caption 属性,你自己用代码跟你的 数据库中"a"表中"名称"字段内容关联

      cmdDynCmd(i).Caption = "动态按钮" & i + 1

      '这儿的 x 、y 你可以根据 i 的值来进行计算

      cmdDynCmd(i).Top = X

      cmdDynCmd(i).Left = Y

      '直接 cmdDynCmd(i).move x, y也行

   Next

End Sub

' 这儿就是动态按钮的事件代码

' 根据 Index 判断是哪个按钮触发了事件

' 跟你事先设计好的控件数组完全是相同的用法

' ***** 注意!!!注意这儿的 cmdDynCmd 就是设计时确定的按键名称

Private Sub cmdDynCmd_Click(Index As Integer)

   MsgBox "你点击的是第 " & Index + 1 & " 个动态按钮。", 64

   '具体事件代码只能你自己写

End Sub

思路

两种方式:

1、通过动态按钮方式创建,

2:通过控件数组方式创建。

个人倾向于通过控件数组的方式。一般应用都是有规律的创建的,所以用控件数组合适些。

举例

' 先在窗体上添加一个标准按钮

' 在属性窗口中,把它的 Index属性设置成 0

'        名称改为 cmdDynCmd (其它的名称也行,注意后面的说明)

'        Visible 可以设置成 False

Option Explicit

Private lCmdIndex As Long

Private Sub LoadCmdButton()

'这儿就是加载动态按钮的

   Dim i&

   For i = 0 To NNN   '这儿NNN等于你需要的按钮数减1,可以用变量的

   '你应该能通过你的“数据库中"a"表中"名称"字段”项目数 来确定值为多少

   ' *** 注意这儿的 cmdDynCmd 就是设计时确定的按键名称 ***

      If (lCmdIndex > 0) Then Load cmdDynCmd(i)

      cmdDynCmd(i).Visible = True

      '这儿的 Caption 属性,你自己用代码跟你的 数据库中"a"表中"名称"字段内容关联

      cmdDynCmd(i).Caption = "动态按钮" & i + 1

      '这儿的 x 、y 你可以根据 i 的值来进行计算

      cmdDynCmd(i).Top = X

      cmdDynCmd(i).Left = Y

      '直接 cmdDynCmd(i).move x, y也行

   next

End Sub

' 这儿就是动态按钮的事件代码

' 根据 Index 判断是哪个按钮触发了事件

' 跟你事先设计好的控件数组完全是相同的用法

' ***** 注意!!!注意这儿的 cmdDynCmd 就是设计时确定的按键名称

Private Sub cmdDynCmd_Click(Index As Integer)

   MsgBox "你点击的是第 " & Index + 1 & " 个动态按钮。", 64

   '具体事件代码只能你自己写

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11611242.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存