自定义控件的编程?

当然上边三个函数可以合成一个函数,因为他们方法是一样的,只是风格参数不同而已。

VB本身提供两种风格:Flat和3D,但是也许你想改变一下外观,比如让TextBox的边界介于Flat和3D之间那种效果,如图:

怎么做呢?在VC中我们在创建一个窗口对象时可以制定它的风格,但是在VB中,IDE已经按照它自己的想法给我创建好了,如果我们想要改变它只能把已经存在的进行修改,这时我们就需要借助的GetWindowLong和SetWindowLong兄弟的帮助来完成这个任务了。

‘首先将原始的窗口属性读出来

‘这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。该函数与DeferWindowPos函数相似,只是它的作用是立即表现出来的(在vb里使用:针对vb窗体,如它们在win32下屏蔽或最小化,则需重设最顶部状态。如有必要,请用一个子类处理模块来重设最顶部状态)

*当然上边的函数可以用在所有窗口对象上,只不够有些窗口对象不需要这么做。

如果窗体中有很多TextBox需要这样设置,而且不都是控件数组,那么可以在包装一下上面的函数:

VB 中可以设置TextBox中文本水平方向居左、居右、居中,但是不能设置垂直方向,也不能微调文本距离左边界的距离,但是我们还是可以借助API的帮助来完成这个需求:

   '实现这个效果首先TextBox的MultiLine属性必须为True(多行文本,其实这个属性关系创建TextBox内部使用哪个类,因此一旦创建就不能修改这个属性,所以不能在代码中修改这个属性)

这样我们就达到了文本垂直居中的目的,其实只要用的熟了,找到切入点,还是很容易实现的。

如果你查看TextBox中常用的消息,你会发现有这样一对消息:EM_GETMARGINS 和EM_SETMARGINS,MSDN的解释是:获取和设置编辑控件的左、右边距(不得用于NT3.51)。具体是左还是右由该消息的参数决定。

看到这些也许你就知道我们可以用这两个消息完成我们的需求,好下面实际着手进行验证:

好经过测试目的达到,但是这样做有什么意义呢?有的时候如果你想在texebox中放入其他对象,而又不希望文本被覆盖掉,你就需要用到这个方法。

}

这是来自google的广告, 支持的朋友点一下,如果你不想被骚扰, 可单击此处

    如果你需要做一些附加的操作,你也不必担心,日期控件自带的自定义事件可以满足你的需求.此外,你还可以在自定义事件中调用提供的API库来做更多的运算和扩展,绝对可以通过很少的代码满足你及其个性化的需求.

    注意下面几个重要的指针,将对你的编程带来很多便利
    注意:函数原型必须使用类似 function(dp){} 的模式,这样子,在函数内部才可以使用dp

    示例5-2-3 将选择的值拆分到文本框

    注意:当onclearing函数返回true时,系统的清空事件将被取消,
    函数体里面没有引用$dp,所以函数原型里面可以省略参数dp

    示例5-3-2 使用cal对象取得当前日期所选择的月份(使用了 dp.cal)

    示例5-3-3 综合使用两个事件

    示例5-4-1 年月日改变时弹出信息

    下面是有关这两个属性的描述详见

}

我要回帖

更多关于 如何编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信