高分请教怎么自动生成控件???高手请进,分不够再加……

csdnjunki 2004-07-21 12:26:23
我想根据一个未知数量的数组arry(i)在Picture上来自动生成SSPanel(i)控件,请问
我应该怎么做呢?
...全文
164 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnjunki 2004-07-26
  • 打赏
  • 举报
回复
TO junki:
虽然不是很好,但我想暂时也可以用了!
谢谢大家……
junki 2004-07-26
  • 打赏
  • 举报
回复
Dim I As Integer
For I = 0 To 2
If Newpanel Is Nothing Then
Set Newpanel = Controls.Add("threed.sspanel", "newpanel" & CStr(I), Me)
Set Newtxt = Controls.Add("vb.textbox", "newtxt" & CStr(I), Newpanel)
Newpanel.Visible = True
Newtxt.Visible = True

Call NewSetPos(I)
Set Newtxt = Nothing
Set Newpanel = Nothing
End If
Next I

End Sub

Private Sub NewSetPos(II As Integer)

' Newpanel.Top = (100 + I * 500)
' Newpanel.Left = (100 + I * 500)
'
' Newtxt.Top = (100 + I * 500)
' Newtxt.Left = (100 + I * 500)

Newpanel.Move 300 + II * 1000, 200 + II * 1000
但在这里,他是每建立一次,然后释放了对象,然后再建立……
也就是说并不是一次性全部建立你所要求数量的控件,
所以在动态控件释放之前,要求你已经把全部的工作已经做完
然后再释放。

csdnjunki 2004-07-23
  • 打赏
  • 举报
回复
感谢Apple200228(Apple)的帮助。
但是我现在找的是在多个容器上(容器控也是动态创建的)动态创建多个SSpanel控件,而且他的数量是要根据一个数组arry(i)有关系,随着i的变化,创建的个数将相应的变生改变。
例如:
我要动态创建i个SSpanel控件,并在每个SSpanel控件上动态创建text控件,
并且要求它们的相互位置是相同的,统一的;也就是说当创建第一个SSpanel控件的
时候,相应的在这个SSpanel控件上创建第一个text控件,以此类推,第二个,第三个……一直到第i个。
这个i的值是可以从一个函数中传过来,到这里的时候,他已经是个确定的值了。
csdnjunki 2004-07-22
  • 打赏
  • 举报
回复
我是我在一个网上看到的资料。
但是我现在找的是在picture上动态创建多个SSpanel控件,
而且他的数量是要根据一个数组arry(i)有关系,随着i的变化,创建的个数
将相应的变生改变。
请大家帮助我……
csdnjunki 2004-07-22
  • 打赏
  • 举报
回复
动态创建控件

' 声明一个窗体级的变量
Dim WithEvents txtTotal As TextBox

Sub CreateTextbox()
' 创建新的Textbox控件
Set txtTotal = Controls.Add("VB.TextBox", "txtTotal",Me)
' 将控件移动到你所需要的地方
txtTotal.Move 1000, 1000, 1000, 1000
' 创建时,所有的控件都是不可见的
txtTotal.Visible = True
End Sub
请注意Add方法的第二个参数:分配给控件的名称。你可以用这个名称从Controls集合中获取相应的控件或移除该控件。例如:

Controls.Remove "txtTotal"

在变量声明时加上WithEvents关键字,即使在设计时窗体不存在该控件,你也可以为该控件的事件编写代码。
***上面所讲的方法只适合解决VB内置的控件。***
如果你要看详细的资料,可以去google找一下相关方面的资料。
Apple200228 2004-07-22
  • 打赏
  • 举报
回复
你的问题需要两步解决:
1 动态加载控件
2 将已经加载的控件移动到指定的容器中,并重新定位
第一步你已经能够做到,现在我写第二步
建一模块
Option Explicit

Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

在窗体加载控件加
SetParent 动态加载控件的句柄,制定容器句柄
例如 SetParent Frame1.hWnd, Picture1.hWnd
将 Frame1 移动到 Picture1中
jackyhyoung 2004-07-21
  • 打赏
  • 举报
回复
你有必要說明生成什么樣的控件吧!
华昌001 2004-07-21
  • 打赏
  • 举报
回复
好象没有吧,自己做吧
sssss342072 2004-07-21
  • 打赏
  • 举报
回复
哈哈~!根据一个未知数量的数组arry(i)在Picture上来自动生成SSPanel(i)控件
说清楚些啊,不说具体点我都没法学习了UP

1,453

社区成员

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

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