MFC空控件 --- 使用下拉列表、微调按钮

Ultimate Grid 支持很多种单元格类型,比如下拉列表、多选按钮、微调按钮、单选按钮等等。如果没有您所需要的标准单元格类型,自定义单元格类型也很容易。下拉列表、多选按钮等类型的单元格是内嵌的,而要添加非内嵌类型单元格需要调用CUGCtrl::AddCellType() 。

第1步 添加2个文件到项目
把 Ultimate Grid 源代码压缩包里面的CellTypes目录拷贝到D:\UG下
目录情况如下图:


接着再把CellTypes目录下的UGCTSpin.cpp文件添加到"Ultimate Grid"目录下,如下图:


项目“Addtional include directories:”处参数修改成“.\,..\include,..\skel,..\CellTypes”,如下图:


第2步 创建一个单元格类型对象
在MyCug.h头文件中包含UGCTSpin.h文件,再创建一个在MyCug类中类型为CUGSpinButtonType的public成员变量m_spin,代码如下:
  C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include   "ugctrl.h"
#include   "resource.h"

//******* Add the New Header File
#include   "UGCTSpin.h"

//#include "UGCelTyp.h"

class  MyCug:  public  CUGCtrl

{

public :

    
//****** Create the New Object

    CUGSpinButtonType m_spin;


第3步 在表格中添加2个类型的单元格
修改MyCug::OnSetup函数如下代码:
C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
void  MyCug::OnSetup()
{
    
//******* Declare all variables
     int  index num_cols, num_rows;
    CUGCell cell;
    CString heading, number;

    
//******* Enable the Menu
    EnableMenu(TRUE);

    
//****** Set the Rows and Columns
    SetNumberCols( 10 );
    SetNumberRows(
10 );

    
//******* Get the number of Rows and Columns
    num_rows GetNumberRows();
    num_cols GetNumberCols();

    
//******* Add the Top Heading
     for  (index  0 index num_rows; index++)
    {
        heading.Format(
"%d" index  1 );
        QuickSetText(-
1 index, heading);
        QuickSetAlignment(-
1 index, UG_ALIGNVCENTER );
    }

    
//******* Add the Side Heading
     for  (index  0 index num_cols; index++)
    {
        heading.Format(
"%d" index  1 );
        QuickSetText(index, -
1 heading);
        QuickSetAlignment(index, -
1 UG_ALIGNVCENTER );
    }

    
//****** Populate the grid
     for  ( int   0 num_cols; x++)
    {
        
for ( int   0 num_rows; z++)
        {
            number.Format(
"%d" ((x  1 (z  1 )));
            QuickSetText(x, z, number);
            QuickSetAlignment(x, z, UG_ALIGNVCENTER );
        }
    }

    
//****** Set the Spin Button cell type
     int  cell_index AddCellType(&m_spin);
    GetCell(
0 0 &cell);
    cell.SetCellType(cell_index);
    SetCell(
0 0 &cell);

    
//***** Set the Droplist cell type
    GetCell( 2 2 &cell);
    cell.SetCellType(UGCT_DROPLIST);
    cell.SetLabelText(
"Sunday\nMonday\nTuesday\nWednesday\nThursday\nFriday\nSaterday\n" );
    SetCell(
2 2 &cell);
}


第4步 修改MyCug::OnCellTypeNotify()函数
当用户点击微调按钮或下拉列表按钮时系统会调用MyCug::OnCellTypeNotify()函数。微调按钮有上下两个箭头,用户点击上箭头时,单元格内的数值会增加0.25,反之减少0.25。代码如下:
C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
int  MyCug::OnCellTypeNotify( long  ID, int  col, long  row, long  msg, long  param)
{
    UNREFERENCED_PARAMETER(ID);
    UNREFERENCED_PARAMETER(col);
    UNREFERENCED_PARAMETER(row);
    UNREFERENCED_PARAMETER(msg);
    UNREFERENCED_PARAMETER(param);

    
//****** Declare CUGCell object
    CUGCell cell;

    
if  (ID ==  4  && msg == UGCT_SPINBUTTONUP)
    {
        
double  number, newnumber;

        GetCell(col, row, &cell);
        number cell.GetNumber();
        newnumber number 
0 . 25 ;
        cell.SetNumber(newnumber);
        SetCell(col, row, &cell);
    }

    
if  (ID ==  4  && msg == UGCT_SPINBUTTONDOWN)
    {
        
double  number;

        GetCell(col, row, &cell);
        number cell.GetNumber();
        number number 
0 . 25 ;
        cell.SetNumber(number);
        SetCell(col, row, &cell);
    }
    
    
return  TRUE;
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值