!!外观象ComboBox可以自己指定下拉窗体的控件介绍!!
有人说,VB做不了象PB那样的DropDown的DateWindow。实际上是可以的。
鉴于大家都想改造ComboBox一下拉,而且,现在也没有好的方法。(网上虽然有一用API的例子,但是只是一个用控件替换的方法。并没使用标准Popup Window做下拉)
我们虽然有Form20.dll可以显示多列。不过,这样的ComboBox还是不能有OK Cancel按钮在其中。前几天Playyuer说要用TreeView做下拉。那时实际我已在开发这个控件了!(可以说,不是ComboBox,但外观与ComboBox是一样的!)
(当然,以前有人说过,用TextBox与按钮组合即可,现在做的可不是那样的东西!)
现在好了,下拉的DropDown控件有了。简单得很,你只要给控件指定下拉的窗体就行了!外观可是与ComboBox完全一样!
现在控件做好了,以下是使用的例子代码:
在使用本控件的窗体中的代码:
Option Explicit
Private Sub Form_Load()
XpDropDown.Value = 33333
XpDropDown.Caption = "44444"
Set XpDropDown.FrmDrop = FrmTest
End Sub
指定的下拉窗体,FrmTest的代码:
'因为下拉窗体显示时不再是VB的Form,所以其关闭要由控件来控制.
'因而有以下代码
Option Explicit
Private Sub Command1_Click()
'给控件设置新的Caption与Value,并使其关闭
FrmDemo.XpDropDown.CloseMe 111111, "222222"
End Sub
'下面这些都是用来控制窗体是否要关闭的代码.实际就是两个方法.
'CtrlGotFocusAsk和CtrlLostFocusAsk
'但是对于所有具有这些事件的控件都要加上这两个代码,
'这样才能通知XpDropDown控件,是否关闭下拉窗口.
'此窗口中绝不允许有任何Form.Hide或Unload Me
'不过这也无妨,关键是加这个代码烦了一些.你帮助我发贴,
'看看其他高手是否有好办法.不过要注意,不允许用Hook,因为这不安全!
Private Sub Command1_GotFocus()
FrmDemo.XpDropDown.CtrlGotFocusAsk
End Sub
Private Sub Command1_LostFocus()
FrmDemo.XpDropDown.CtrlLostFocusAsk
End Sub
Private Sub Command2_GotFocus()
FrmDemo.XpDropDown.CtrlGotFocusAsk
End Sub
Private Sub Command2_LostFocus()
FrmDemo.XpDropDown.CtrlLostFocusAsk
End Sub
同时,也可以通知大家,如果需要可以到www.easthot.net的论坛中预订!
谢谢!