请教各位大虾:如何才能把控件放置到SSTab中动态添加的Tab上去?

zhouqi66 2002-03-27 01:09:34
请教各位大虾:如何才能把控件放置到SSTab中动态添加的Tab上去?
...全文
163 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuxc 2002-03-27
  • 打赏
  • 举报
回复
晕倒!~~~~
zhouqi66 2002-03-27
  • 打赏
  • 举报
回复
谢谢飞猪啊!我以前是放在form_load()里了。
fuxc 2002-03-27
  • 打赏
  • 举报
回复
这么简单的程序也会出错?再试!
别忘了加控件:Command1和sstab1

Private Sub Command1_Click()
SSTab1.TabsPerRow = 5
SSTab1.Tabs = 5

SSTab1.Tab = 4
Set Command1.Container = SSTab1
Me.Top = 1000
Me.Left = 1000
End Sub
xxlroad 2002-03-27
  • 打赏
  • 举报
回复
'都有了
http://www.csdn.net/expert/topic/460/460639.xml?temp=.1688806
主  题: 关于SSTAB控件的问题?
wangsitao 2002-03-27
  • 打赏
  • 举报
回复
在FORM上建SSTab1
SSTab1.TABS=1
在FORM上建LISTBOX1(0)
注意要是控件数组只建1个
在FORM上建Command1
Private Sub Command1_Click()
SSTab1.Tabs=2
SSTab1.Tab = 1
Load LISTBOX1(1)
Set LISTBOX1(1).Container = SSTab1
LISTBOX(1).visibled=true
LISTBOX(1).top=100
LISTBOX(1).Left=100
End Sub
看看行不行
注意不能在Form_Load()里把控件添加到Tab上去
UNLoad LISTBOX1(1)可卸载控件LISTBOX1(1)
fuxc 2002-03-27
  • 打赏
  • 举报
回复
不行吗?不可能的,报什么错?

SSTab1.Tab = 2 就是第3个tab啊!
xxlroad 2002-03-27
  • 打赏
  • 举报
回复
'这个可能对你有用
http://www.csdn.net/expert/topic/512/512930.xml?temp=.8653223
主  题: 如何将控件动态地放入sstab中?
zhouqi66 2002-03-27
  • 打赏
  • 举报
回复
试过了,不行。
fuxc 2002-03-27
  • 打赏
  • 举报
回复
试试看:


Private Sub Command1_Click()
SSTab1.Tab = 2
Set Command1.Container = SSTab1
End Sub
fuxc 2002-03-27
  • 打赏
  • 举报
回复
试试看:

Private Sub Command1_Click()
SSTab1.Tab = 2
Set Command1.Container = SSTab1
End Sub
turbochen 2002-03-27
  • 打赏
  • 举报
回复
在运行时添加未引用的控件

您也可以利用 Add 方法来动态添加一个在工程中没有被引用的控件。(“未引用的”控件是不出现在 Toolbox 中的控件)。为此,您必须也把控件的 License 关键字添加到 Licenses 集合中。下面的示例中在添加控件本身之前添加了控件的许可证关键字:

Option Explicit
Private WithEvents extCtl As VBControlExtender

Private 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

注意 请参阅关于检索控件许可证关键字的详细信息的“请参阅”列表中的“增加方法 (Licenses 集合) ”。

但是,为了编程这样一个未引用控件的事件,您必须使用 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 Sub

Private Sub extObj_ObjectEvent(Info As EventInfo)
'使用 Select Case 编程控件的事件。
Select Case Info.Name
Case "Click"
'这里处理 Click 事件。
'现在显示其他的 case
Case Else '未知事件
'这里处理未知事件。
End Select
End Sub

Note 不能把一个固有的控件指定给这个 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 Sub

Private 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。
zyl910 2002-03-27
  • 打赏
  • 举报
回复
.Parent属性!
zhouqi66 2002-03-27
  • 打赏
  • 举报
回复
问题是添加上去总在index为0的tab上啊!
Fanks 2002-03-27
  • 打赏
  • 举报
回复
激活该Tab后再让控件.Visible=True即可

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧