如何根据数据库里记录的条数显示一样多的label或文本框? 如何根据数据库里记录的条数显示一样多的label或文本框?是用load吗?new吗?就是怎么能动态在窗体里加减控件的个数.并显示出来. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 动态添加控件----利用VB6的新功能作者:- 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上面添加一个commandbuttonPrivate Sub Form_Load() Form1.Controls.Add "VB.CommandButton", "cmdOk", Picture1 With Form1!cmdOk .Visible = True .Width = 500 .Caption = "确认(&Y)" End WithEnd Sub==========================重点:当您添加一个未引用的需要许可证的控件到一个现存的(已部署好的)应用程序时,在使用 Add 方法之前您必须也添加这个控件的许可证关键字。在运行时添加未引用的控件您也可以利用 Add 方法来动态添加一个在工程中没有被引用的控件。(“未引用的”控件是不出现在 Toolbox 中的控件)。为此,您必须也把控件的License 关键字添加到 Licenses 集合中。下面的示例中在添加控件本身之前添加了控件的许可证关键字:Option ExplicitPrivate WithEvents extCtl As VBControlExtenderPrivate Sub Form_Load() Licenses.Add "prjWeeks.WeeksCtl", "xydsfasfjewfe" Set extCtl = Form1.Controls.Add("prjWeeks.WeeksCtl", "ctl1") extCtl.Visible = True ’ The control is invisible by default.End Sub但是,为了编程这样一个未引用控件的事件,您必须使用 WithEvents 关键字声明一个对象变量为VBControlExtender 对象(如上),并且设置该对象变量到Add 方法返回的引用上。然后,利用VBControlExtender 对象的 ObjectEvent事件来编程该控件的事件。下面是一个简单的例子。Option ExplicitDim WithEvents objExt As VBControlExtender ’声明 Extender 变量Private Sub LoadControl() Licenses.Add "Project1.Control1", "xydsfasfjewfe" Set objExt = Controls.Add("Project1.Control1", "myCtl") objExt.Visible = True End SubPrivate Sub extObj_ObjectEvent(Info As EventInfo) ’使用 Select Case 编程控件的事件。 Select Case Info.Name Case "Click" ’这里处理 Click 事件。 ’现在显示其他的 case Case Else ’未知事件 ’这里处理未知事件。 End SelectEnd SubNote: 不能把一个固有的控件指定给这个 VBControlExtender 变量; 任何这种试图将引起类型不匹配错误。但是,您也可以通过使用 WithEvents 关键字声明一个对象变量,并且设置该方法返回的引用为该变量,从而编程一个动态添加控件的事件,如下所示。Option Explicit’声明对象变量为 CommandButton 。Private WithEvents cmdObject As CommandButton Private Sub Form_Load() Set cmdObject = Form1.Controls.Add("VB.CommandButton", "cmdOne") cmdObject.Visible = True cmdObject.Caption = "Dynamic CommandButton"End SubPrivate Sub cmdObject_Click() Print "This is a dynamically added control"End Sub如果希望添加一个用户控件或任何 ActiveX 控件到您的窗体,必须或者把这个控件添加到“工具箱”,或者把控件的 License 关键字添加到 Licenses集合中。有关详细信息请参阅“增加方法 (Licenses 集合)”。注意:如果您添加一个 ActiveX 或用户控件到您的工程,但是没有在窗体中使用它,您也必须不要选定“工程属性”对话框的“生成” 选项卡上的“删除有关未使用的 ActiveX 控件”选项。如果您的应用程序试图添加该控件,那么该 Add 方法将失败,因为必需的信息已经被丢弃。删除控件=============要删除动态添加的控件,用“移除”方法。请注意,您只能删除那些用“添加”方法添加的控件(与用“Load”语句添加的控件进行对比)下面的示例删除一个动态添加的控件:Form1.Controls.Remove "ctl1" ’ 该控件的名称为 ctl1。 不用每条记录都加控件的。试试DataGrid控件。 先加一个text1 把他的index =0然后更具需要 load text1(i) text1(i)..Visible = True ......... 非用label和text么?没必要吧?用个表格控件多好,方便快捷。非要用的话可以用个数组加 如果你用一样数量的label和text,就要考虑你的FORM的控件位置重置,要多不少代码,而且不美观,直接用GRID控件什么都解决了:) 加多个LABEL倒没什么问题,TEXT加多了可就占资源了,不占成~~~ index 什么意思? 16字节转换BCD显示时间 如何让DATAGRID显示数据时某个数据显示为红色 数据倒出问题 ActivX不能创建对象rtxserver.rtxobj DataGrid的用法:如何在datagrid中插入一列数据? 请教:在简单的有向图中已知起点和终点条件下,求不重复的所有路径的算法 请问个简单的问题,谢谢! 如何通过端口设置打印机参数 急!我需要VB好用的压缩控件DLL,只要有DLL就可以用的那种,不要安装。(控件是免费的哦!~) 在combobox中如何取某一列表内容的index值? 有人在研究,网络游戏,文字终端吗?
作者:-
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==========================
重点:当您添加一个未引用的需要许可证的控件到一个现存的(已部署好的)应用程序时,在使用 Add 方法之前您必须也添加这个控件的许可证关键字。在运行时添加未引用的控件
您也可以利用 Add 方法来动态添加一个在工程中没有被引用的控件。(“未引用的”控件是不出现在 Toolbox 中的控件)。为此,您必须也把控件的License 关键字添加到 Licenses 集合中。下面的示例中在添加控件本身之前添加了控件的许可证关键字:Option Explicit
Private WithEvents extCtl As VBControlExtenderPrivate Sub Form_Load()
Licenses.Add "prjWeeks.WeeksCtl", "xydsfasfjewfe"
Set extCtl = Form1.Controls.Add("prjWeeks.WeeksCtl", "ctl1")
extCtl.Visible = True ’ The control is invisible by default.
End Sub但是,为了编程这样一个未引用控件的事件,您必须使用 WithEvents 关键字声明一个对象变量为VBControlExtender 对象(如上),并且设置该对象变量到Add 方法返回的引用上。然后,利用VBControlExtender 对象的 ObjectEvent事件来编程该控件的事件。下面是一个简单的例子。Option Explicit
Dim WithEvents objExt As VBControlExtender ’声明 Extender 变量Private Sub LoadControl()
Licenses.Add "Project1.Control1", "xydsfasfjewfe"
Set objExt = Controls.Add("Project1.Control1", "myCtl")
objExt.Visible = True
End SubPrivate Sub extObj_ObjectEvent(Info As EventInfo)
’使用 Select Case 编程控件的事件。
Select Case Info.Name
Case "Click"
’这里处理 Click 事件。
’现在显示其他的 case
Case Else ’未知事件
’这里处理未知事件。
End Select
End SubNote: 不能把一个固有的控件指定给这个 VBControlExtender 变量; 任何这种试图将引起类型不匹配错误。但是,您也可以通过使用 WithEvents 关键字声明一个对象变量,并且设置该方法返回的引用为该变量,从而编程一个动态添加控件的事件,如下所示。Option Explicit
’声明对象变量为 CommandButton 。
Private WithEvents cmdObject As CommandButton Private Sub Form_Load()
Set cmdObject = Form1.Controls.Add("VB.CommandButton", "cmdOne")
cmdObject.Visible = True
cmdObject.Caption = "Dynamic CommandButton"
End SubPrivate Sub cmdObject_Click()
Print "This is a dynamically added control"
End Sub
如果希望添加一个用户控件或任何 ActiveX 控件到您的窗体,必须或者把这个控件添加到“工具箱”,或者把控件的 License 关键字添加到 Licenses集合中。有关详细信息请参阅“增加方法 (Licenses 集合)”。注意:如果您添加一个 ActiveX 或用户控件到您的工程,但是没有在窗体中使用它,您也必须不要选定“工程属性”对话框的“生成” 选项卡上的“删除有关未使用的 ActiveX 控件”选项。如果您的应用程序试图添加该控件,那么该 Add 方法将失败,因为必需的信息已经被丢弃。删除控件
=============
要删除动态添加的控件,用“移除”方法。请注意,您只能删除那些用“添加”方法添加的控件(与用“Load”语句添加的控件进行对比)下面的示例删除一个动态添加的控件:Form1.Controls.Remove "ctl1" ’ 该控件的名称为 ctl1。
然后更具需要 load text1(i)
text1(i)..Visible = True
.........