一个多列组合框

下载演示项目- 22kb 下载演示文件- 6kb 你想要: multicolumn 组合框吗? 每个专栏都有标题吗? 在禁用的组合框控件中控制文本颜色? 在组合框的编辑控件中显示/编辑“描述”,而获得“id”? 以正常方式在组合框中排序? 如果你的答案都是yes,你可以使用我的类CMultiColumnComboBox在我的项目中使用。它是一个所有者绘制的组合框类,派生自类CComboBox,但它非常容易使用。如上所示,它的工作原理与普通的组合框完全一样。不管组合框有多少列,您都不需要修改类。你可以设置一个列显示和从BoundColumn得到文本,甚至一个组合框是“下

  

 

拉”或“简单”的一个。当你在“下拉”或“简单”组合框的编辑框中键入字符时,项目会在ShowColumn中搜索,而不是BoundColumn,但结果是在BoundColumn中。如果在禁用组合框时不喜欢灰色文本,可以更改其颜色。 如何使用这个控件 在资源对话框中放入一个Ownerdraw组合框,复制到您的工作空间或项目的目录中,并在顶部插入follow line您的CPP文件。# include MultiColumnComboBox.h 添加新的成员变量对话框类。DDX_Control (pDX IDC_COMBO1 m_ComboBoxControl1); DDX_CBString (pDX IDC_COMBO1 m_ComboBoxString1); 在消息映射函数OnInitDialog中,使用FormaComboBox设置m_TotalColumn, m_BoundColumnn和m_ShowColumn,这个函数必须在其他函数调用之前被调用。m_ComboBoxControl2。FormatComboBox (2 0 1); 然后,使用SetColumnWidth为每个列设置m_ColumnWidth,使用SetColumnAlignStyle为每个列设置m_ColumnAlignStyle。如果使用默认值DT_LEFT,则跳过它。使用SetColumnTitle设置每个列的标题。如果你不想要标题,跳过它。m_ComboBoxControl2。SetColumnWidth (150 0); m_ComboBoxControl2。SetColumnAlignStyle (DT_LEFT DT_CENTER); m_ComboBoxControl1。SetColumnTitle(“ID”、“描述”); 使用CMultiColumnComboBox::AddRow代替CComboBox::AddString在组合框的列表框中添加一行。m_ComboBoxControl2。AddRow (ColumnString1 ColumnString0); m_ComboBoxControl4。AddRow (ColumnString0 ColumnString1, ColumnString2 ColumnString3); 如您所见,现在您可以将它用作一个普通的组合框。 注: 函数SetColumnWidth、SetColumnAlignStyle和AddRow可以使用数量可变的参数调用。你可以修改AddRow作为Printf工作。如果你需要更多的帮助,尽管问我。 本文转载于:http://www.diyabc.com/frontweb/news169.html

posted @ 2020-08-04 01:37  Dincat  阅读(108)  评论(0编辑  收藏  举报