用控件聚合技术为FlexGrid增添PickList功能
发布时间:2020-05-27 19:48:23 所属栏目:程序设计 来源:互联网
导读:摘要:本文主要介绍了一种通过控件聚合技术来为网格控件FlexGrid增添PickList功能的方法。 前言 在对数据库进行数据录入时,PickList功能能极大的方便用户,在dELPHI 程序中的DBgrid控件就直接提供了PickList功能,但VB和VC下的DBgrid和MSFlexGrid却没有提供
|
用来接受用户输入的组合框控件在程序运行之初,如果用户进行输入操作,是不显示的,只有在用户发出鼠标单击的消息需要进行编辑时才将其显示,因此需要将组合框控件的初始属性设为不可见。通过前面的方案设计可以看出,整个操作的全过程无非是对鼠标和焦点的消息响应和处理。通过FlexGrid控件响应鼠标单击的事件可以得知用户是否进行编辑操作,并在捕获到该操作后,通过对消息的响应完成用户输入信息从组合框到网格单元的复制:
在完成对网格单元的坐标计算及转换后,需要动态调整组合框的坐标位置及大小,使其能与当前网格单元相配,同时把焦点由当前的网格单元转移到组合框上,从而实现两控件的聚合:
如果此时的网格原先已有内容,此时亦应当将内容转移到组合框中,在用户修改后再作回存处理:
此时只能接收用户的输入,当对下一单元进行编辑时输入过的数据并没有保存到网格中,因此在组合框控件失去焦点时应完成当把当前用户修改过的内容回存到单元格的处理。具体来说,是对组合框ON_KILLFOCUS消息的响应:
通过以上几步编码基本上实现了对FlexGrid控件和组合框控件的聚合,并通过这种聚合技术成功地为FlexGrid控件增添了PickList功能,不仅方便了用户的使用,也使人机界面更为友好。下图就是一个使用了本文所述控件聚合技术实现的具有PickList能力的程序界面,从界面上和使用效果看根本感觉不出是两种各自相互独立组件的作用结果,同Delphi提供的DBGrid控件在效果上很相似:
小结 本文所述控件聚合方法具有很好的通用性和可扩展性,不仅在本文可以实现PickList功能,也可以通过类似的方法来实现Windows标准控件同自己或是第三方开发的ActiveX控件的聚合,来拓展原有控件的功能。甚至还可将聚合后的控件编写为一个新的Active X控件作为一个完整的控件以备频繁使用。综上所述,利用控件聚合技术可以在较小编码量的前提下大大扩展基本控件的功能,有着很好的应用前景。本文所述程序在Windows 98下,由Microsoft Visual C++ 6.0编译通过。
|
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!