如何实现由列表控件控制的属性表

摘要:很多MFC的程序都用到了属性表和属性页来实现选项设置的界面,但是MFC本身提供的属性表页功能有限,界面也很原始,一些新软件都实现了自己定义的更为美观的属性页。MFC原始的属性页是通过CTabCtrl进行切换控制的,本文给出了一种现在较为常见的用CListCtrl进行页面切换的属性页的方法,并且对对列表控件进行了重绘。 CMyPropertySheet是一个从CPropertySheet派生而来的类,因此你仍然可以不费力的利用MFC CPropertySheet的诸多特性,具体使用方法稍后我会详细说明。

该属性表的实现效果如下:


图一

一、使用

CMyPropertySheet的使用方法与MFC的CPropertySheet类似,首先要在程序中创建两个属性页,也就是两个CPropertyPage的派生对象。然后将MyPropertySheet.cpp 和 MyPropertySheet.h添加至工程,在程序的视图类头文件中(假定是个SDI程序)将CMyPropertySheet的头文件包含进来

#include “MyPropertySheet.h”

在资源视图里设置一个新的菜单项“选项”(放在哪儿随你) 用ClassWizard添加响应函数,在该函数里添加如下代码创建一个属性表对象myPS

CMyPropertySheet myPS;

然后向属性表添加两个属性页。

myPS.AddPage(&m_page1);
myPS.AddPage(&m_page2);

接下来要添加属性页的图标,该图标会在对应列表项以及属性页的标题上显示,注意这里添加的顺序要与属性页的添加顺序保持一致。

myPS.AddIcon(IDI_GLOBAL);
myPS.AddIcon(IDI_ADDITION);

最后创建并显示该属性页。

myPS.DoModal();

剩下的工作就跟一般属性表完全一样了。

CMyPropertySheet类提供如下自定义函数,可以对属性表的外观进行设置。

SetSepratorColor,SetCaptionColor与SetSelectedColor都接受一个类型为COLORREF的参数,分别用以设置列表分隔线,属性页标题以及列表选择项背景的颜色。

SetListFont设置列表的字体。

读者也可以根据自己的需要对其进行扩充。

时间: 2024-09-14 22:43:16

如何实现由列表控件控制的属性表的相关文章

ASP.NET 2.0移动开发之列表控件

asp.net|控件 概述 在很多情况下,我们都会使用到列表控件来方便用户选择一些选项.例如在某网站上注册新用户时,通常会询问你的性别是"男"还是"女",这时我们用单项按钮以供用户做出相应的选择.还有当你填写自己的家庭地址时,通常会使用到一个包含各省省名的下拉列表来供用户直接选择,这样可以减少用户的输入量.上述的这些单项按钮和下拉列表都在ASP.NET移动程序中都是以列表控件的形式存在的.我们可以使用列表控件来呈现各种形式(单项.多选.下拉列表)的列表,以供用户选择

div模拟下拉菜单select控件模块 css实现表单select美化

     div css模拟实现form表单下拉select控件美化与功能实现.可以实现模拟的select表单下拉提交数据传值功能     使用方法与调用方式:$.divselect("#divselect","#inputselect"); "#divselect" 这是哪个模拟列表的盒子的ID,"#inputselect"这个是选择以后给 id="inputselect" 的input隐藏域赋值的哦.

用ASP.NET 2.0 FormView控件控制显示

asp.net|控件|控制|显示 ASP.NET 2.0的FormView控件类似于DetailsView控件,因为它能方便地显示后端数据源的单个记录.本文将讨论这个控件的语法和应用. 用户化 虽然这两个控件一次显示一条记录,DetailsView和FormView的关键差别在于:FormView利用用户定义的模板:而DetailsView则使用行字段.FormView控件没有预先定义数据布局:相反,你建立一个包含控件的模板来显示记录中的单个字段.模板中包含建立表单所要用到的格式.控件和绑定表达

ASP.NET 数据列表控件的分页总结(一)自定义方法分页和PageDataSource类分页

在Asp.net中,提供了三个功能强大的列表控件:GridView.DataList和Repeater控件,但其中只有GridView控件提供分页功能.虽然DataGrid提供了分页功能,不过看上去功能有限,但是我们可以通过GridView的一些属性来获取状态以及增加首页.尾页功能按钮.如果在速度效率不是很讲究的情况下,由DataGrid自己管理分页还是不错的,付出的代价就是要把整个相关数据取出来后再删选指定页的数据.好处就是开发速度快,不需要写分页的存储过程.所以若需要追求执行效率,而且数据量

C#发现之旅-高性能ASP.NET树状列表控件(上)

已有树状列表控件分析发现问题 近期发现有人在ASP.NET项目开发中使用一种叫dtree的树状列表组件加载缓慢.这也是笔者撰写本章的动机.毛主席教导我们,做事要发现问题,分析问题和解决问题.首先我们发现了已有的树状列表WEB控件加载缓慢的问题,接下来就很自然的是分析问题了. 下图就是dtree 运行界面的例子 分析问题 现在我们分析问题,对使用dtree生成树状列表的程序代码的分析,可以了解程序运行过程如下图所示 在这样的程序中,首先服务器端的C#代码查询数据库,然后根据查询所得数据拼凑出一个J

C#发现之旅-高性能ASP.NET树状列表控件(中)

第一段HTML代码块 若控件的"DynamicLoadChildNodes"属性值为true,也就是控件运行在客户端动态加载子节点,则输出支持客户端动态加载子节点的HTML代码,首先输出一个名为"SkyTreeViewControlTempXML"的XML数据岛标签,并将它的 "onreadystatechange"事件绑定到"SkyTreeViewControlDynamicLoadChildNodes"的 Javascri

ASP.NET自定义控件 第七天 开发具有丰富特性的列表控件

1. 引言 在上次任务里,我们为星级控件增加了数据绑定的特性,但是在实际运用中还 会产生更多的需求,例如用户可能希望创建一个课程列表(如图1): 开发具有丰富特性的列表控件-"> 或者在数据项比较多的时候,能够手动控制数据的排列方式(图2) 本次任务中,我们将一起开发这样的控件. 2. 分析 以上两个图例中显示的都是列表控件,在ASP.NET2.0中ListControl类是列表 控件的父类,通过上次任务的分析可以了解CheckBoxList.RadioButtonList和 DropDo

使用XML为列表控件绑定数据

了解使用XML为列表控件绑定数据的各种不同的方法.介绍在web开发项目中,我们需要经常写一些代码从数据源读取动态数据到列表控件中.在经典ASP时期,这是一件相对比较困难的任务.例如,我们必须查询数据库,找回 RecordSet 并且在手动创建HTML标签时还要重述 RecordSet .现在在ASP.NET中,你做同样的事情有了更好的办法.此外,除了用数据库作为数据源,你还可以使用各种数据源,比如XML文件.哪一个更好呢?这会在性能.适应性.可靠性.易配置性.安全等方面引起争论.在这里,我不想讨

android开发实现列表控件滚动位置精确保存和恢复的方法(推荐)

Android开发经常要对列表的滚动位置进行保存和恢复,网上也有很多关于此功能的方法文章,但绝大多数都只能保存恢复到某一行,对于滚动到半行的情况不能精确的恢复.也有很多文章介绍了好几种方法,也说某些方法能够精确的控制,但实际上根本不能实现.还有些介绍了很多玄乎且非常复杂的方法,但也没看到能完整实现的代码. 经过一段时间的研究测试,下面的代码可以完美的实现列表滚动位置的精确保存和恢复,而且只是在原来记忆到行位置的基础上增加了2行代码而已. 具体见下面代码和注释: //保存位置: int posit