打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Visual FoxPro Grid——一个小技巧和一个日历类

http://www.sweetpotatosoftware.com/SPSBlog/PermaLink.aspx?guid=878c1b11-1770-405c-92ea-cdbe2c838dfa

Visual FoxPro 中的 Grid
    我的意见是,有时,针对 Visual FoxPro 中的 Grid ,有着不公正的态度。虽然它确实有很古怪的地方,但它也是一个功能强大的控件,我甚至用它工作的很愉快。它的简单另人惊讶。你能对 column 有多重的控制,甚至可以将一个 Grid 放置到 Grid 中,所以,本质上,你可以在一个单元格显示很多记录。

    在这一篇,我想向你展示一些 Grid 控件鲜为人知的特性。如果你了解了这些特性,你就成为了解它的人之一。当 Grid 刷新或重绘时,它将访问 columns 包含的每个控件的 backstyle 属性,在这里你可以做任何事,来单独控制 Grid 中显示。

来自 MS Fox Team 的一些帮助
    请允许我来尝试说明... 假设你有一个 Grid ,它只有一个 column ,并且包含 Textbox1 。如果你通过代码设置 Textbox1 的背景色,假设,设置为红色,那么,显示在 column1 中的每个单元格都会是红色。那么,如何得到动态的颜色(在同一 column 的单元格具有不同的颜色)?是的,MS Fox Team 为我们提供了 column 对象的一些动态(dynamic)属性,它们作用于单元格(DynamicAlignment、DynamicBackColor、DynamicCurrentControl、DynamicFontBold、DynamicFontItalic、DynamicFontName、DynamicFontOutline、DynamicFontShadow、DynamicFontSize、DynamicFontStrikeThru、DynamicFontUnderline、DynamicForeColor 和 DynamicInputMask)。这些都是非常有用的,并且,我假设 DynamicColor 可以很好的工作,来改变 Grid 中 column 里的单个单元格的背景色。但是,如果你想做更复杂的怎么办?如果你在 column 中有一个包含多个控件的容器,并且你想完全的动态定义每个控件的前景色和背景色,或者你想在 Grid 中的单元格显示不同的图片,怎么办?

开发者通常采用的解决方案
    针对这些问题的一个解决方法是,对于 Grid 的 column 包含多个控件,使用 DynamicCurrentControl 来来决定显示哪些。例如一个 Textbox 具有红色背景,而另一个具有白色的背景,或者对于不同的图片使用不同的 image 控件。

    一些 Visual FoxPro 开发者会采用另一个巧妙的解决方法,子类化 column 对象并与一个并不使用的 column 动态属性挂钩来解决其他问题(例如 DynamicForeColor)。如果 ForeColor 被设置为 1 ,那么就执行它,如果 forecolor 被设置为 2就做其他的事情,如果forecolor 被设置为 3... 依此类推。这个方法和前面的方法都是有效的,这里,还有另一种方法。

另一种方法
    根据前面的说明,column 中当前控件的 backstyle 会被访问,而且,它并不仅仅访问一次,Grid 中每个可见单元格都会访问。所以,使用这个我们几乎可以为所欲为,动态格式化也好,显示什么也好。想要显示不同的图片吗?子类化一个容器,并在其中放入一个 image 控件,然后将容器置于 column 中。然后,在 backstyle_access 方法中(你需要在子类化的容器中添加这个 access 方法)设置所包含的 image 控件的 picture 属性值为数据源中的一个字段,这个字段包含 image 控件 backstyle_access 方法中的不同路径。

this.picture = crsImages.Paths

    提供的下载包含一个这样的示例。当你运行示例时,它会询问你包含图象文件的目录。如果你不想使用它,你可以选择项目所在文件夹,因为我已经在其中包含了下面所显示的屏幕截图。这个解决方案更有效率。这比在Grid 的 column 中针对你想显示的每一个图象添加一个 image 控件要好的多。如果有 100 个图象,我企不要添加 100 个 image 控件?如果这么做,我宁愿死。

日历类和真实的示例
    好了,怎样才能把这些应用到现实问题中呢?哪一类问题可以很好的使用 backstyle_access 动态的改变容器中的项目呢?各种个样的!为了示范,这里有一个非常有用的例子,我做了一个日历类的演示。我已经使用 Grid 控件创建了一个超级日历类。它可以很好的示范在 Grid 中使用 backstyle_access 的强大,更不要说 Visual FoxPro 是多么强大了。下面是项目源代码的下载链接和一些屏幕截图(你知道该期待什么了)。在源代码的文件夹中有一个可执行文件来运行示例,如果你喜欢,你可以单独的运行其中的表单。这个示例是使用 Visual FoxPro 9.0 创建的,所以,如果你使用先前的版本,你需要修改代码,或者,更好的办法,就是升级你的 Visual FoxPro !还会有更伟大的事情到来,Visual FoxPro 前进!

下载 VFP 日历示例和源代码 (大约 91 KB)


这是一个简单的日历


日历类的一些高级特性的示范

使用日历类改良的日期和日期时间控件

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
常用控件附录
vfp grid控件中,如何获得当前单元格的值
用EXCEL做日历牌(公历)
WPF笔记(2.4 Grid)
标签控件(针对 Visual Basic 6.0 用户)
编程论坛-[求助]VFP9连编后的程序传到未装VFP的机上不能运行?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服