mccad 发表于 2003-9-10 19:50:00

用程序动态地在窗体上添加控件

我们可以通过程序在窗体上添加控件:

Private Sub UserForm_Click()
    Dim check As MSForms.CheckBox
    Set check = Me.Controls.Add("Forms.CheckBox.1", "CheckBox1", True)
    check.Caption = "明经通道"
End Sub

当然也可以是其它控件,其它控件之ProgID 值如下:

复选框 Forms.CheckBox.1
组合框 Forms.ComboBox.1
命令按钮 Forms.CommandButton.1
框架 Forms.Frame.1
图像 Forms.Image.1
标签 Forms.Label.1
列表框 Forms.ListBox.1
多页 Forms.MultiPage.1
选项按钮 Forms.OptionButton.1
滚动条 Forms.ScrollBar.1
数值调节钮 Forms.SpinButton.1
TabStrip Forms.TabStrip.1
文本框 Forms.TextBox.1
切换按钮 Forms.ToggleButton.1

lei_jinbo 发表于 2003-9-11 09:24:00

Muitipage怎么把控件从PAGE1复制PAGE2?

page1和page2上的控件一样,我怎样在做好page1上的控件后,全部复制到PAGE2,复制完后该怎样访问他们?
   谢谢版主!

mccad 发表于 2003-9-11 19:09:00

想想你这样做有什么意义?
如果程序要求有固定样式的控件,就不必通过程序来加上,而是在做窗体时加上。

lei_jinbo 发表于 2003-9-12 08:50:00

可是我PAGE1上有10多个控件,如果page2上能在程序里加载的话,那会方便的多,
而且我想通过数组来访问的话,程序也好写.而且PAGE2如果本来就是要动态增加的话,那就必须动态加载控件了.

多谢指点!

mccad 发表于 2003-9-12 12:11:00

其实使用动态添加控件是不想不出办法的情况下才做的。
你的情况其实可以使用列表框或组合框来做,何必动态增加控件,因为动态添加控件还要考虑到增加的控件的排列等问题,不是那么简单的可以控件得好。

lei_jinbo 发表于 2003-9-12 16:11:00

可是我事先不知道有几页,用户可以增加页,那样的话,就必须动态加载.
帮主说的位置问题,如果能过用控件数组的话,就可以搞定.但我又搞不懂VBA的控件数组能不能用,VB是好做的.

mccad 发表于 2003-9-12 20:05:00

如果我就不会这样做了。
你可以在窗体上加个下拉列表框,因为你有多页,而且页数不定,用这个下拉列表可以列出所有的页出来。
因为每页的内容都一样,所以选定指定页时,窗体下的控件中的内容会随着不同的页而变化。
如果动态增加,会给后继的编程带有很大的不定数。

gzy 发表于 2004-3-26 20:44:00

能不能使用DLL在VBA的窗体上创建对象?


                                      一个lable就行了,用于版本申明,即使密码给了别人,让别人也改不了。

gzy 发表于 2004-3-26 21:13:00

另外对象创建到窗体上如何定位?

my_computer 发表于 2004-3-26 22:19:00

其实,使用动态方式的情况应该在程序中尽量避免才对。所以斑竹并不推荐你使用这种方法。


我在编程的很多时候,我都会有些比较偷懒的做法。比如减少一些不容易实现的功能;简化一些繁琐的效果。


有时不要太苛求完美。


某些情况下,让用户更早的用上可能会更重要些。
页: [1] 2
查看完整版本: 用程序动态地在窗体上添加控件