TAdvStringGrid控件属性事件介绍和使用方法(AdvStringGrid使用技巧)

本文介绍了Delphi编程中TAdvStringGrid控件的常用属性和事件,包括编辑权限设置、对齐方式、背景色、列格式、下拉列表、复选框等。同时,讲解了单元格颜色、字体定制、列宽自动调整和过滤、打印等功能的实现方法。
摘要由CSDN通过智能技术生成

TAdvStringGrid是Delphi编程中常用的控件,经常用于统计数据和设计比较复杂的表格。控件功能很强大,但相应的使用也很复杂!

以下是整理出的常用技巧,有一部分是我自己的经验,有一部分是网上搜的别人的总结,有一部分整理了,有一部分没有整理;有一部分测试了,有一部分没有经过测试

  常用属性设置

Options—goEditing:是否可以编辑
Options—goTabs:控制是否可用TAB键将光标移到下一CELL
Option—goColSizing/RowSizing=true:设置列宽/行高可调整
Navigation—AlwaysEdi=true:进入单元格时自动变成编辑状态
Navigation—AdvanceOnEnter=true:回车时自动移到下一个CELL
Navigation—AdvancelInsert:控制当光标在最后一个CELL时是否可以按回车插入新行
Navigation—AllowDeleteRow:控制是否按DELETE键删除当前行
Navigation—AppendOnArrowDown:控制按下箭头是否可以新增一行(未找到这个属性)
MouseActions—RowSelect/ColSelect=true :选择整行/选择整列
Navigation—AutoComboDropSize=true组合框下拉框展开宽度自动设置
MouseActions—DirectComboDrop=True组合框进入时自动展开
(点击鼠标时直接进入编辑,或允许、不允许改变行或列宽等特性,都可以在MouseActions中设置。)
AutoNumAlign:=True则数字类型数据在CELL里会自动右对齐
AutoNumberCol(n);自动在第n列按顺序显示数字,即1,2,3……
AutoSize:=true :自动设置列宽,不推荐使用,自动调整后,真的很难看。
EnableWheel:=true :一次滚动多行,EnableWheel:=False时,一次滚动一行。
SearchFooter—Visible:=TRUE时,会在ADVStringGrid的底部显示出搜索框(未找到属性)
FloatingFooter—Visible:为TRUE时,即在ADVStringGrid底部显示求和列,要想让求和列显示小数,还需要将FloatFormat属性设置为:%g(未找到属性)
(自动换行到新追回行:必须在onCellValidate过程中执行strGrid.AddRow;可以同时加一些赋值语句。)
(当合并行后,如果想使文字垂直居中,可以先设置ADVStringGrid的 MultilineCells 设置为 True,然后在文字前面加 #13 换行来实行)
(改变固定列的显示样式:ControlLook——FixedGradientFrom(起始色)——FixedGradientFrom(结束色)

  用过程设置相关属性

1,设定单元表各列是否可以编辑: 首先在设置属性:Options—goEditing=true;然后,在CanEditCell事件中设定。
procedure TForm50.stgPartListCanEditCell(Sender: TObject; ARow, ACol: Integer; var CanEdit: Boolean);
Var
    I:integer;
begin
        if (stgPartList.cells[cC1Data_Flag,ARow]='') or (stgPartList.cells[cC1Data_Flag,ARow]='C') then begin
                canEdit:=false;
                exit;
        end  else begin
                for I:=0 to cColQty1 do begin
                        if ACol=I then begin
                                if stgPartList.cells[cC1Data_Flag,aRow]='C' then CanEdit:=false
                                else begin
                                        if cColProp1[I,1]='Y' then CanEdit:=true;       //cColProp1:列属性数组,下同
                                        if cColProp1[I,1]='N' then CanEdit:=False;
                                end;
                        end;
                end;
        end;
end;
2,设定单元表各列对齐方式: 在GetAlignment事件中设定。

{
1、必须设置advStringGrid属性WordWrap = false,
2、在OnGetAlignment事件中,添加以下代码
procedure Tfrm_book_input.StringGrid1GetAlignment(Sender: TObject; ARow,
ACol: Integer; var HAlign: TAlignment; var VAlign: TVAlignment);
begin
//设置文字垂直居中必须设置属性:StringGrid1.WordWrap = false,否则不居中
HAlign := taCenter;
VAlign := vtaCenter;
end;
上述两个步骤,缺一不可,否则不会垂直居中
}

procedure TForm1.strGrid1GetAlignment(Sender: TObject; ARow, ACol: Integer; var AAlignment: TAlignment);
Var
    I:integer;
begin
        //直接定义
        {if ARow=0 then AAlignment:=tacenter
        else begin
                case ACol of
                0:   AAlignment:=taRightJustify;
                1:   AAlignment:=taCenter;
                //2:   AAlignment:=taCenter;
                3:   AAlignment:=taRightJustify;
                4:   AAlignment:=taCenter;
                6:   AAlignment:=taCenter;
                8:   AAlignment:=taCenter;
                9:  AAlignment:=taCenter;
                else AAlignment:=taLeftJustify;
                end;
        end;  }
        //用属性数组定义
        if ARow=0 then AAlignment:=taCenter
        else begin
                for I:=0 to xpColQty1-1 do begin
                        if ACol=I then begin
                                //case strToInt(xaColProp1[I,4])
                                if xaColProp1[I,4]='C' then AAlignment:=taCenter;
                                if xaColProp1[I,4]='L' then AAlignment:=taLeftJustify;
                                if xaColProp1[I,4]='R' then AAlignment:=taRightJustify;
                        end;
                end;
        end;
        {//
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值