第6课 使用下拉列表、微调按钮

本文详细介绍了如何在UltimateGrid中自定义单元类型,实现微调按钮和下拉列表的功能。通过添加文件、创建单元类型对象、设置表网格,以及修改特定单元类型的响应事件,用户可以轻松地扩展UltimateGrid的功能,满足不同的应用需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
#include "ugctrl.h"

//******* Add the New Header File
#include "UGCTSpin.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 x = 0; x < num_cols; x++)
    {
        
for(int z = 0; z < 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(
00, &cell);
    cell.SetCellType(cell_index);
    SetCell(
00, &cell);

    
//***** Set the Droplist cell type
    GetCell(22, &cell);
    cell.SetCellType(UGCT_DROPLIST);
    cell.SetLabelText(
"Sunday\nMonday\nTuesday\nWednesday\nThursday\nFriday\nSaterday\n");
    SetCell(
22, &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 a 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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值