当前最全的TAdvStringGrid控件属性事件介绍和使用方法

更新时间:2023-08-08 04:24:12 阅读: 评论:0

当前最全的TAdvStringGrid控件属性事件介绍和使用方法(AdvStringGrid使用技巧/Cells)
---
作者:TTT
日期:20090306
顺治帝---       
  TAdvStringGridDelphi编程中常用的控件,经常用于统计数据和设计比较复杂的表格。控件功能很强大,但相应的使用也很复杂!
  以下是我整理出的常用技巧,有一部分是我自己的经验,有一部分是网上搜的别人的总结,有一部分整理了,有一部分没有整理;有一部分测试了,有一部分没有经过测试~~~呵呵,但都是我手工编辑的啊~~(部分示例过程是用于创建和设置动态Cells的过程,如果不理解请参考我总结的另一篇文章<完美动态TAdvStringGrid(cells)一例>)
  常用属性设置
  --- 
    Options—goEditing:是否可以编辑
    Options—goTabs:控制是否可用托庇TAB键将光标移到下一CELL
    Option—goColSizing/RowSizing=true:设置列宽/行高可调整
    Navigation—AlwaysEdi=true:进入单元格时自动变成编辑状态
    Navigation—AdvanceOnEnter=true:回车时自动移到下一个CELL
    Navigation—AdvancelInrt:控制当光标在最后一个CELL时是否可以按回车插入新行
    Navigation—AllowDeleteRow:控制是否按DELETE键删除当前行
    Navigation—AppendOnArrowDown:控制按下箭头是否可以新增一行(未找到这个属性)
    MouActions—RowSelect/ColSelect=true :选择整行/选择整列
    Navigation—AutoComboDropSize=true组合框下拉框展开宽度自动设置
    MouActions—DirectComboDrop=True组合框进入时自动展开
    (点击鼠标时直接进入编辑,或允许、不允许改变行或列宽等特性,都可以在MouActions中设置。)
    AutoNumAlign:=True则数字类型数据在CELL里会自动右对齐
    AutoNumberCol(n);自动在第n列按顺序显示数字,即123……
    AutoSize:=true :自动设置列宽,不推荐使用,自动调整后,真的很难看。
    EnableWheel:=true :一次滚动多行,EnableWheel:=Fal时,一次滚动一行。
    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 (lls[cC1Data_Flag,ARow]='') or (lls[cC1Data_Flag,ARow]='C') then begin
            canEdit:=fal;
赵扩            exit;
        end  el begin
            for I:=0 to cColQty1 do begin
                if ACol=I then begin
                    lls[cC1Data_Flag,aRow]='C' then CanEdit:=fal
                    el begin
                        if cColProp1[I,1]='Y' then CanEdit:=true;      //cColProp1:列属性数组,下

                        if cColProp1[I,1]='N' then CanEdit:=Fal;
                    end;
                end;
            end;
小白兔日记        end;
    end;
    2,设定单元表各列对齐方式: GetAlignment事件中设定。
    procedure TForm1.strGrid1GetAlignment(Sender: TObject; ARow, ACol: Integer; var AAlignment: TAlignment);
    Var
      I:integer;
    begin
        //直接定义
        {if ARow=0 then AAlignment:=tacenter
        el begin
            ca 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;
            el AAlignment:=taLeftJustify;
            end;
        end;  }
        //用属性数组定义
        if ARow=0 then AAlignment:=taCenter
        el begin
            for I:=0 to xpColQty1-1 do begin
                if ACol=I then begin
                    //ca 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;
        {//以下代码不明,此过程没有HAlign,VAlign
        HAlign := taCenter;
        VAlign := vtaCenter;}
    end;
   3,改变单元格的背景色,可在OnGetCellColor事件中写代码实行(前提需将FLAT设置为TRUE/设定Grid颜色:GetCellColor事件中设定:
    procedure TForm50.stgPartListGetCellColor(Sender: TObject; ARow,
      ACol: Integer; AState: TGridDrawState; ABrush: TBrush; AFont: TFont);
    Var
      I:integer;
    begin
            {if stgPList.Cells[cNCols1[3]-2,ARow]='1' then
            abrush.Color:=clScrollBar
        el begin
            if (ARow=0) or (ACol=0) then
                abrush.Color:=clBtnFace
            el begin
              if ACol=cNCols1[2]-2 then
                  abrush.Color:=clwindow
              el
                  abrush.Color:=clinfoBK;
            end;
        end;}
        if ARow=0 then
                abrush.Color:=clBtnFace
        el begin
            for I:=0 to cColQty1 do begin
                if ACol=I then abrush.Color:=StringToColor(cColProp1[I,5]);
            end;
        end;
        {if ARow=0 then begin    //如果不加这一句,则是以下对应的整列,我这里是只改变固列,所以要把ARow设为0
          Ca ACol of
            1: ABrush.Color:=RGB(227,249,248);
飞的草书写法            2: ABrush.Color:=RGB(250,232,193);
            3: ABrush.Color:=RGB(227,249,248);
            4: ABrush.Color:=RGB(250,232,193);
            12: ABrush.Color:=RGB(227,249,248);
            14: ABrush.Color:=RGB(250,232,193);
            24: ABrush.Color:=RGB(227,249,248);
            48: ABrush.Color:=RGB(250,232,193);
            51: ABrush.Color:=RGB(227,249,248);
          End;
        END;}告示范文
    end;
  4,设置Grid中列特殊类型,某一列的数据格式,预定义的格式有:
二级菜单  enum TEditorType { edNormal, edSpinEdit, edComboEdit, edComboList, edEditBtn, edCheckBox, edDateEdit, edDateEditUpDown, edTimeEdit, edButton, edDataCheckBox, edNumeric, edPositiveNumeric, edFloat, edCapital, edMixedCa, edPassword, edUnitE
ditBtn, edLowerCa, edUpperCa, edFloatSpinEdit, edTimeSpinEdit, edDateSpinEdit, edNumericEditBtn, edFloatEditBtn, edCustom, edRichEdit, edNone, edUniEdit, edUniComboEdit, edUniComboList };
  通过OnGetEditorType()事件进行设置,例如:
    procedure TForm1.strGrid1GetEditorType(Sender: TObject; ACol,  ARow: Integer; var AEditor: TEditorType);
      switch (aCol)
        ca 1:aEditor=edComboList; break;  //设置第一列为ComboBox类型输入
        ca 2:aEditor=edEditBtn; break;  //设置第二列为EditBtn类型输入,弹出一个选择框
        ca 3:aEditor=edSpinEdit; break;  //设置第三列为SpinEdit类型输入
        ca 4:aEditor=edDateEdit; break;  //设置第四列为日期型输入,弹出DatetimePicker
    end;

本文发布于:2023-08-08 04:24:12,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1127888.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设置   自动   显示   过程
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图