第4课 行列的尺寸、文本的对齐方式和字体的改变

这一课演示如何改变行或列的尺寸以及单元格文字的对齐方式。通常,当我们把鼠标移动到标题行的分割线或标题列的分隔线时,光标会变成左右或上下两个箭头形状的光标,此时就可以拖动鼠标来改变行或列的尺寸。当然也可以对表格编程以使它的行或列尺寸不可改变。第3课已经介绍了改变单元格属性既可以采用Get...Set函数也可以采用QuickSet()函数,这部分用QuickSet()函数去改变单元格的对齐方式。

第1步 修改OnCanSizeCol()函数

在MyCug()类的OnCanSizeCol()函数中添加如下代码。这段代码将使得用户无法改变第三列的宽度(把鼠标移动到第3列的右边线,就是上标题中绿色的4和5中间的分割线时,会跳出一个警告框)。

 C++ Code 

1
2
3
4
5
6
7
8
9
10
11
int  MyCug::OnCanSizeCol( int  col)
{
    UNREFERENCED_PARAMETER(col);
    
//****** Disallow column 3 from being resized
     if  (col ==  3 )
    {
        MessageBox(
"illegal Procedure!!- Column 3 cannot be resized" "Grid Error" , MB_ICONSTOP);
        
return  FALSE;
    }
    
return  TRUE;
}

 

 

第2步 修改OnCanSizeRow()函数

在MyCug()类的OnCanSizeRow()函数中添加如下代码。这段代码将使得用户无法改变第2行的高度(把鼠标移动到第2行的下边线,就是左标题中绿色的3和4中间的分割线时,会跳出一个警告框)。

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
int  MyCug::OnCanSizeRow( long  row)
{
    UNREFERENCED_PARAMETER(row);
    
if  (row ==  2 )
    {
        
//****** Disallow row 2 from being resized
        MessageBox( "Illegal Procedure -- Row 2 cannot be resized." "Grid Error" , MB_ICONSTOP);
        
return  FALSE;
    }
    
return  TRUE;
}
 

第3步 改变表格文本对齐方式。

文本有好多种对齐方式(左对齐、右对齐、上对齐等等)。这里举例使用UG_ALIGNVCENTER(水平居中)。在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
//******* Declare all variables
int  index , num_cols, num_rows;
CUGCell cell;
CString heading, number;

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

//******* Get the number of rows and columns
num_rows = GetNumberRows();
num_cols = GetNumberCols();

//****** Set the column headings
for  (index =  0 ; index < num_rows; index++)
{
    heading.Format(
"%d" , index +  1 );
    QuickSetText(-
1 , index, heading);
    QuickSetAlignment(-
1 , index, UG_ALIGNCENTER );
}

//******* Set the row headings
for  (index =  0 ; index < num_cols; index++)
{
    heading.Format(
"%d" , index +  1 );
    QuickSetText(index, -
1 , heading);
    QuickSetAlignment(index, -
1 , UG_ALIGNCENTER );
}

//******* Set the multiplication table
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_ALIGNCENTER );
    }
}

(数据都水平居中了)

第4步 改变表格中文字的字体

这个例子演示了如何改变字体风格(25pt 大小的"Arial Bold Italic" 字体)。添加下列代码到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
void  MyCug::OnSetup()
{
    
//******* Declare all variables
     int  index , num_cols, num_rows;
    CUGCell cell;
    CString heading, number;

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

    
//******* Get the number of rows and columns
    num_rows = GetNumberRows();
    num_cols = GetNumberCols();

    
//****** Set the column headings
     for  (index =  0 ; index < num_rows; index++)
    {
        heading.Format(
"%d" , index +  1 );
        QuickSetText(-
1 , index, heading);
        QuickSetAlignment(-
1 , index, UG_ALIGNCENTER );
    }

    
//******* Set the row headings
     for  (index =  0 ; index < num_cols; index++)
    {
        heading.Format(
"%d" , index +  1 );
        QuickSetText(index, -
1 , heading);
        QuickSetAlignment(index, -
1 , UG_ALIGNCENTER );
    }

    
//******* Set the multiplication table
     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_ALIGNCENTER );
        }
    }

    
//***** Create a new Font
     int  fontIndex = AddFont( "Arial Bold Italic" 25 2 );

    
//****** Create a CFont pointer
    CFont *myFont;

    
//****** Populate the CFont Pointer
    myFont = GetFont(fontIndex);

    
//****** Set the font to column 0
    GetColDefault( 0 , &cell);
    cell.SetFont(myFont);
    SetColDefault(
0 , &cell);
}
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值