如何动态加载multiline的text控件
2004-08-07 10:33
429 查看
我刚开始在csdn的vb论坛里看到这个帖子的时候,想了很久都没有找到解决方法。后来看zy910写到“由于Edit控件的设定(只能在创建窗口时设置风格,创建后不能修改)
所以TextBox的MultiLine屬性实现原理是:先清除原有的Edit,再创建一个新的Edit
这在设计时是可行的。但在运行时,会导致文本框相关数据的丢失,甚至会因不安全的代码导致非法操作,所以M$将TextBox的MultiLine屬性设置成运行时只读”,那么通过直接使用textbox控件是无法满足要求的了。
其实我们可以找到一个替代的方法,微软给我们提供了一组无窗口控件库。所谓“无窗口控件”是见名知义,是没有无窗口,因而没有hwnd属性。这个库在主要语言的参考文档中没有提到,它必须手工从common/Tools/vb/Winless目录下安装。安装的方法是将这个目录复制到硬盘上,用regsvr32或vb中对它进行注册,然后双击Mswless.reg,它创建使activex控件对vb环境可用的注册关键字。注册完毕后,从按Ctrl+T从可用的Active控件列表中选取Microsoft Windowless Control 6来把函数库加载到IDE中。
使用windowless函数库的好处是在运行时没有内部控件的限制,事实上所有的属性都可以在运行时改变。这个库中包括TextBox的无窗口版—MSWLess.WLText。也就说我们可以通过动态加载这个控件,来实现动态添加multiline属性的text控件。
Dim WithEvents TxtEditor As MSWLess.WLText
Private Sub Command1_Click()
Set TxtEditor = Controls.Add("MSLess.WLText", "txtEdit")
TxtEditor.MultiLine = True
TxtEditor.ScrollBars = wlBoth
TxtEditor.Move 0, 0, ScaleWidth, ScaleHeight
TxtEditor.Visible = True
End Sub注意:“工程属性”中“删除有关未使用的active控件的信息”的复选框不要选。
所以TextBox的MultiLine屬性实现原理是:先清除原有的Edit,再创建一个新的Edit
这在设计时是可行的。但在运行时,会导致文本框相关数据的丢失,甚至会因不安全的代码导致非法操作,所以M$将TextBox的MultiLine屬性设置成运行时只读”,那么通过直接使用textbox控件是无法满足要求的了。
其实我们可以找到一个替代的方法,微软给我们提供了一组无窗口控件库。所谓“无窗口控件”是见名知义,是没有无窗口,因而没有hwnd属性。这个库在主要语言的参考文档中没有提到,它必须手工从common/Tools/vb/Winless目录下安装。安装的方法是将这个目录复制到硬盘上,用regsvr32或vb中对它进行注册,然后双击Mswless.reg,它创建使activex控件对vb环境可用的注册关键字。注册完毕后,从按Ctrl+T从可用的Active控件列表中选取Microsoft Windowless Control 6来把函数库加载到IDE中。
使用windowless函数库的好处是在运行时没有内部控件的限制,事实上所有的属性都可以在运行时改变。这个库中包括TextBox的无窗口版—MSWLess.WLText。也就说我们可以通过动态加载这个控件,来实现动态添加multiline属性的text控件。
Dim WithEvents TxtEditor As MSWLess.WLText
Private Sub Command1_Click()
Set TxtEditor = Controls.Add("MSLess.WLText", "txtEdit")
TxtEditor.MultiLine = True
TxtEditor.ScrollBars = wlBoth
TxtEditor.Move 0, 0, ScaleWidth, ScaleHeight
TxtEditor.Visible = True
End Sub注意:“工程属性”中“删除有关未使用的active控件的信息”的复选框不要选。
相关文章推荐
- 如何动态加载控件以及插件编程思想(C#)
- [转]如何动态加载控件以及插件编程思想(C#)
- 掉掉注意了,如何动态加载用户控件(ascx)
- IOS 加载Xib 后 如何 动态修改xib中的控件frame
- asp.net 动态创建TextBox控件 如何加载状态信息
- IOS 加载Xib 后 如何 动态修改xib中的控件frame
- 如何动态加载控件以及插件编程思想(C#)
- 如何动态加载控件以及插件编程思想(C#)
- 如何动态加载控件以及插件编程思想
- 如何动态加载控件以及插件编程思想(C#)
- asp.net定义用户控件时,属性持久化和如何动态加载的问题
- 如何动态加载控件以及插件编程思想(C#)
- 如何动态加载控件以及插件编程思想(C#)
- 如何动态加载控件以及插件编程思想(C#)
- 如何动态加载控件以及插件编程思想
- Android控件 动态初始化 动态加载 EditText显示光标 隐藏键盘
- WinForm如何动态加载用户控件
- 动态添加的控件(如TextView)如何居中?如何相对对齐?
- asp.net中如何实现动态加载多个可视控件
- 如何动态加载控件以及插件编程思想(C#)