AdvStringGrid使用本事,AdvStringGrid使用小结

by admin on 2019年8月22日

AdvStringGrid使用小结,advstringgrid小结

组合近年温馨做的有的办事,用到了第三方控件AdvStringGrid,这里就常用的局地技术做个细微总结

    (1)怎么着设置表格固定的列数,如下图所示:

           
  bf88必发唯一官网 1
那边一定的列数为3列,通过设置上边属性来改动定位的列数:

              AdvStringGrid.FixedCols:=n;(n为要稳住的列数值)
    (2)如何从AdvStringGrid中读取和向AdvStringGrid中程导弹入值:

      
AdvStringGrid.Cells[j,i]:=str;(向其单元格赋值)这里需求小心的是,j为列数,i为行数。

    (3)怎样在运行界面中手动调节列宽与行宽,效果图如下所示:

           
  bf88必发唯一官网 2
那只如下边性即能够在运转分界面中手动的调动行宽与列宽:

     Options ->  goColsizing:=true 列宽

     Options ->  goRowsizing:=true 行宽
    (4)如何使文字换行,并垂直居中,效果图如下:

          
  bf88必发唯一官网 3

    把goRowsizing设置为true后,将WordWrap也安装为true;
    (5)如何使列宽依照单元格内容与列标题内容自动调度列宽

     AdvStringGrid2.AutoSizeColumns(true,4);4意味前后留出的字节数。

    (6)如何下AdvStringGrid中增添CheckBox,并剖断其是不是被入选的景观,效果图如下:

        
   bf88必发唯一官网 4

在窗体创制单元加多如下代码:

     for i:=1 to AdvStringGrid3.rowcount-1  do
     begin
       AdvStringGrid3.AddCheckBox(2,i,false,false);
     end;

那么哪些判定其是还是不是被挑选,并读取个中的值,参谋代码如下:

    var

      flag:boolean;

    for j:=1 to m do (m为表格的行数)
    begin
      AdvStringGrid3.GetCheckBoxState(2,j,flag);
      if flag then
      begin

      …………

      end;

    (7)怎么样调节单元格总字体的颜色,比方对于有个别不行数据希望呈现为中湖蓝,效果图如下:

         
  bf88必发唯一官网 5
编纂代码如下:
     AdvStringGrid2.FontColors[21,j]:=clred;

    (8)如何统一单元格:

那边自个儿所选取的章程是,把具备数据搜聚完了之后再统一单元格,合併后的效果图如下:

        
 bf88必发唯一官网 6
合併的现实性思路是这么的,先定义三个数组类型,把每列中值不平等的起来地点记录下来,然后再张开合併,参照他事他说加以考察代码如下:

    i:=0;
    setlength(ipos,100);
    for j:=1 to m do
    begin
      if
AdvStringGrid2.Cells[0,j]<>AdvStringGrid2.Cells[0,j+1] then
      begin
        ipos[i]:=j;
        i:=i+1;
      end;
    end;
    AdvStringGrid2.MergeCells(0,1,1,ipos[0]);
    AdvStringGrid2.MergeCells(23,1,1,ipos[0]);
    AdvStringGrid2.MergeCells(24,1,1,ipos[0]);
    if i>1 then
    begin
      for j:=0 to i-2 do
      begin
       
AdvStringGrid2.MergeCells(0,ipos[j]+1,1,ipos[j+1]-ipos[j]);
       
AdvStringGrid2.MergeCells(23,ipos[j]+1,1,ipos[j+1]-ipos[j]);
       
AdvStringGrid2.MergeCells(24,ipos[j]+1,1,ipos[j+1]-ipos[j]);
      end;
    end;
    (9)怎么样清空表格

    使用Clear过程

    AdvStringGrid2.Clear;

    (10)怎样使单元格的有着剧情居中突显

    AdvStringGrid2.VAlignment:=vtacenter;

    for j:=0 to m do//TabSheet2独具单元格突显居中
    begin
      for i:=0 to AdvStringGrid2.ColCount-1 do
      begin
        AdvStringGrid2.Alignments[i,j]:=TaCenter;
      end;
    end; 

结合近年自个儿做的局地办事,用到了第三方控件AdvStringGrid,这里就常用的一部分才具做个比十分小总括(…

整合近年自身做的有个别办事,用到了第三方控件AdvStringGrid,这里就常用的有的手艺做个小小的计算

组成近年和好做的一些干活,用到了第三方控件AdvStringGrid,这里就常用的部分技艺做个细微计算

日前最全的TAdvStringGrid控件属性事件介绍和平运动用格局(AdvStringGrid使用本领/Cells)

作者:TTT
日期:20090306
—       
  TAdvStringGrid是Delphi编制程序中常用的控件,通常用来计算数据和企图相比复杂的报表。控件功效很强劲,但相应的利用也很复杂!
  以下是小编收拾出的常用本事,有部分是本身要好的阅历,有局地是互联网搜的旁人的下结论,有一部分关照了,有一对尚无整理;有一对测验了,有一点点一直不经过测验~呵呵,但都以自个儿手工业编写制定的哎。(部分示范进程是用来创建和装置动态Cells的历程,假若不精晓请参见作者总结的另一篇小说<完美动态TAdvStringGrid(cells)一例>)
  常用属性设置
  — 
    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]AdvStringGrid使用本事,AdvStringGrid使用小结。=’C’
then CanEdit:=false
                    else begin
                        if cColProp1[I,1]=’Y’ then
CanEdit:=true;       //cColProp1:列属性数组,下同
                        if cColProp1[I,1]bf88必发唯一官网 ,=’N’ then CanEdit:=False;
                    end;
                end;
            end;
        end;
    end;

    2,设定单元表各列对齐格局: 在Get阿里gnment事件中设定。

    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;
        {//以下代码不明,此过程未有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
        else begin
            if (ARow=0) or (ACol=0) then
                abrush.Color:=clBtnFace
            else begin
               if ACol=cNCols1[2]-2 then
                   abrush.Color:=clwindow
               else
AdvStringGrid使用本事,AdvStringGrid使用小结。                   abrush.Color:=clinfoBK;
            end;
        end;}
        if ARow=0 then
                abrush.Color:=clBtnFace
        else 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
          Case 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, edMixedCase, edPassword, edUnitEditBtn, edLowerCase,
edUpperCase, 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)
        case 1:aEditor=edComboList;
break;  //设置头名列ComboBox类型输入
        case 2:aEditor=edEditBtn;
break;  //设置第二列为EditBtn类型输入,弹出三个选项框
        case 3:aEditor=edSpinEdit;
break;  //设置第三列为SpinEdit类型输入
        case 4:aEditor=edDateEdit;
break;  //设置第四列为日期型输入,弹出DatetimePicker。
    end;

    5,扩张edComboEdit和edComboList的下拉列表:
    方法:
    TAdvStringGrid:: ClearComboString(void); //清除已有了下拉列表
    TAdvStringGrid:: AddComboString(AnsiString S);
    TAdvStringGrid::Combobox->Sorted = true;
    通过Combobox可以访谈内置的Combo类型的控件的性质和格局。
   
倘使列为组合框时,在此处同期设置下拉列表内容,以下为设置八个结合框时代码:

    {procedure TForm1.strGrid1GetEditorType(Sender: TObject; ACol,
      ARow: Integer; var AEditor: TEditorType);
    Var
      I,J:integer;
    begin
            for I:=0 to xpColQty1-1 do begin
                 if ACol=I then begin
                     if Copy(xaColProp1[I,5],1,1)=’C’ then begin
                         AEditor:=edComBoEdit;
                         if ACol=xpC1STATUS then begin 
//假如为状态列(xp1XXXX:注解的 列号,下同)
                             strGrid1.ClearComboString;
                             for J:=0 to xpQMS_Status-1 do begin
                                 if
copy(xaRMS_Status[J],1,1)<>’C’ then 
//xaRMS_XXX:每一类组合框选项值数组,下同
                                  
strGrid1.AddComboString(xaRMS_Status[J]);
                             end;
                         end;
                         if ACol=xpC1Operation_MODE then begin
                             strGrid1.ClearComboString;
                             for J:=0 to xpQMS_OpMode-1 do begin
                                
strGrid1.AddComboString(xaRMS_OpMode[J]);
                             end;
                         end;
                         if ACol=xpC1FROM_DEPT then begin
                             strGrid1.ClearComboString;
                             for J:=0 to xpQMS_WH-1 do begin
                                
strGrid1.AddComboString(xaRMS_WH[J]);
                             end;
                         end;
                     end;
                 end;
            end;
    end;}

  6.充实edCheckBox分界面管理/AdvStringGrid插入checkbox列
    设置:advstringgrid–>option–>goEditing=true
           advstringgrid–>enableGraphics=true
    在from create事件中插足

    for i:=1 to advstringgrid.rowcount-1 do
      advstringgrid.AddCheckBox(1,i,false,false);  
//在那之中1意味所在列数

    使用时要注脚变量bCheck

    var  bCheck:boolean;

    读取状态:

        for I:=1 to stgPartList.RowCount-1 do begin
            stgPartList.GetCheckBoxState(cC1Issue_Flag,I,bCheck); 
//获得情状,赋给变量bCheck
            if (bCheck=true) then begin
            end;
        end;

    设定意况:

        for I:=1 to stgPartList.RowCount-1 do begin
            if pFlag=true then begin
                stgPartList.SetCheckBoxState(cC1Issue_Flag,I,true); 
//设为当选状态
            end else begin
                stgPartList.SetCheckBoxState(cC1Issue_Flag,I,false); 
//设为清空状态
            end;
        end;        
  {在Grid中数据载入之后,使用:
    TAdvStringGrid:: void __fastcall AddCheckBox(int ACol, int ARow,
bool State, bool Data)方法来加多CheckBox分界面管理.
    例如:
    for(i=1;i<editgrid->RowCount;i++)
    editgrid->AddCheckBox(5,i,FALSE,FALSE);}

    +++以下未测量检验
   
7、假设在录入的进程中,要对某列做格式化,比方保留二个人小数,可用ADVStringGrid的GetFloatFormat事件中操作。比方:

    procedure Tfrm_dingdan.strgridGetFloatFormat(Sender: TObject;
ACol,
      ARow: Integer; var IsFloat: Boolean; var FloatFormat: String);
    begin
      case ACol of
        4: floatformat:=’%.0f’;     //第4列保留0位小数
        5: floatformat:=’%.3f’;     //第5列保留3位小数
        6: floatformat:=’%.6f’;    //第6列保留6位小数
        7: floatformat:=’%.5f’;    //第7列保留5位小数
      end;
    end;

   
8,如何贯彻AdvStringGrid的列宽自动按内容调治?怎么着完结AdvStringGrid的列宽自动按列标题宽度调度?autosize属性的意义是何等?
    autosize,能够依据内容调解列宽。
    自动按标题列调节,本人在其RESIZE事件里对COLWIDTHS[I]赋值就行了。
    procedure AutoSizeColumns(const DoFixedCols: Boolean; const Padding:
Integer);
    例:AdvStringGrid1.AutoSizeColumns(False,16);
    AdvStringGrid1.AutoSizeColumns(False,16);
    第一参数:是还是不是为固定列;第四个参数,文字前面留的空格数
    全数单元格自动调节,由第贰个参数设置是还是不是含一定单元,
    如要固定行折行显示应将其行高设为电动调节即:
    AdvStringGrid1.AutoSizeRow(0);

    9、怎么样在AdvStringGrid中为每一种单元格内的字体定制颜色
   
在OnDrawCell事件(看名字那些控件应该有其一事件把,呵呵!)写如下代码:
    (Sender as TAdvStringGrid).Canvas.Font.Color:=clNavy;
   
十五、Options—goRangeSelect:调节是不是可以挑选多行,goRowSelect调节选中整行、AdvStringGrid做多表头,在onIsFixedCell事件中回到true的就是表头

    4、stringGrid中的行或列和并
    grdList.MergeCells(0,0,2,2);
    grdList.Cells[0,0]:=’123456′;
    advstringgrid.mergecol(3,4);
    advstringgrid..MergeCells(0,0,2,2);

    5、
    with advStringGrid1 do   //援引单元格时, 列数在前,行数在后.
    MergeCells(0,0,1,3);
    //合併单元格.前两参数为列数行数. 后两参数分别为要联合的列数和行数
    Cells[1,0] := Format(‘分度线( %s
)’,[m_sMeasureRangeUnit]);;
    MergeCells(3,JieDianStart – 1,1,1);
    Cells[3,JieDianStart – 1] := ‘动作方式’;
    ColWidths[3] := ColWidths[3] + 10;
    Colors[3,JieDianStart – 1] := FixedColor;
    FontNames[3,JieDianStart – 1] := FixedFont.Name;
    FontSizes[3,JieDianStart – 1] := FixedFont.Size;
    FontStyles[3,JieDianStart – 1] := FixedFont.Style;

    +++以下未整理

  7.TAdvStringGrid中各种格式的输入与出口都要相应,不然载入时无法辨别(因为各样类型的文书之间存款和储蓄格式是不雷同的)。举个例子:
  倘若保留时使用TAdvStringGrid::SaveToFile(),那么载入时将在相应的选择TAdvStringGrid::LoadFromFile();其余对应如下:
    TAdvStringGrid:: LoadFromBinFile();??TAdvStringGrid::
SaveToBinFile();TAdvStringGrid:: LoadFromCSV ();??TAdvStringGrid::
SaveToCSV();等等。

  8.透过TAdvStringGrid::
Spin艾德it对象,能够访问内置的Spin艾德it类的特性;

  同样的道理,通过任何一些平放的靶子,可以访谈那一个类的习性,试行那么些类的秘诀。

  9.TAdvStringGrid中的排序难题:
  首先设置排序参数:通过TAdvStringGrid::
SortSettings属性(发表TSortSettings类为三个属性),通过这几个本性设置
    然后调用TAdvStringGrid::QSort()方法应用SortSettings。
    排序方向: SortSettings-> Direction=enum {sdAscending,
sdDescending};
    排序列:SortSettings->Column = 3;

  10.多行展现
  bool TAdvStringGrid::
Multilinecells属性,是或不是支持多行展现,尽管援助的话,能够用”#13”作为分隔符插入多行字符串,用多行呈现。
折中的方法,能够用WordWrap来支撑多行展现
  一般在装置和收回多行突显时,同不经常候,对TAdvStringGrid::DefaultRowHeight进行设置,将有非凡的法力。

  11.欲安装有些行或列为Fixed风格的来得,使用OnIsFixedCell()事件句柄来处理,调用TAdvStringGrid::
Repaint()方法来使设置生效。

    例如:

    If(colfix->Checked) { //colfix为一个TCheckBox
    AdvStringGrid1->Repaint();
    }
    //事件管理句柄
    void __fastcall TForm1::AdvStringGrid1IsFixedCell(TObject
*Sender,
    int Arow, int Acol, bool &isfixed)
    {
    if ((Acol==3) && (colfix->Checked))
    isfixed=TRUE; else isfixed=FALSE;
    }

  12.甩卖展现风格,如增多货币前缀和物理量单位
  在TAdvStringGrid::OnGetFormat()事件处理句柄中拍卖。
    aPrefix参数设置展现前缀;
    aSuffix参数设置展现后缀;
    AStyle参数enum TSortStyle { ssAutomatic, ssAlphabetic, ssNumeric,
ssDate, ssAlphaNoCase, ssAlphaCase, ssShortDateEU, ssShortDateUS,
ssCustom, ssFinancial, ssAnsiAlphaCase, ssAnsiAlphaNoCase, ssRaw,
ssHTML, ssImages, ssCheckBox, ssUnicode };设置排序风格;

  13.是还是不是能对一定的单元格举行编辑 
    用TAdvStringGrid::OnCanEit()事件句柄来拍卖,
    设置bool &canedit参数来达成能还是无法编辑有些单元格的机能

  14.藏身和出示有些单元格
    TAdvStringGrid:: UnHideColumn(int ACol)
    TAdvStringGrid::HideColumn(int ACol);

  15.探寻的落到实处:
    TAdvStringGrid::Find()
    TAdvStringGrid::FindNext();
    八个点子重临TPoint类型,
    Find()须要三个TFindParams类型的参数,enum TFindParameters {
fnMatchCase, fnMatchFull, fnMatchRegular, fnDirectionLeftRight,
fnMatchStart, fnFindInCurrentRow, fnFindInCurrentCol, fnIncludeFixed,
fnAutoGoto, fnIgnoreHTMLTags, fnBackward, fnIncludeHiddenColumns
};可通过投机安顿叁个寻找窗体来落实。
    例如:

    //———-findfirst———-
    void __fastcall TForm1::Findfirst1Click(TObject *Sender) 
    { 
    TFind *Find; 
    TFindParams findparams; 
    TPoint res; 
    Find = new TFind(Form1); 
    if (Find->ShowModal()==mrOk) 
    { 
    if (Find->chkcase->Checked) findparams <<
fnMatchCase; 
    if (Find->chkfull->Checked) findparams <<
fnMatchFull; 
    if (Find->chkregular->Checked) findparams <<
fnMatchRegular; 
    if (Find->dir->ItemIndex==1) findparams <<
fnDirectionLeftRight; 
    if (Find->where->ItemIndex==1) findparams <<
fnFindInCurrentCol; 
    if (Find->where->ItemIndex==2) findparams <<
fnFindInCurrentRow; 
    res =
AdvStringGrid1->FindFirst(Find->findtext->Text,findparams); 
    if (res.x>=0) 
    { 
    AdvStringGrid1->Col=res.x; 
    AdvStringGrid1->Row=res.y; 
    } 
    else 
    ShowMessage(“Text not found”); 
    } 
    delete Find; 
    }
    //———-findnext———-
    void __fastcall TForm1::Findnext1Click(TObject *Sender)
    {
    TPoint res; 
    res = AdvStringGrid1->FindNext();
    if ((res.x>=0) && (res.y>=0)) 
    { 
    AdvStringGrid1->Col=res.x; 
    AdvStringGrid1->Row=res.y; 
    } 
    else 
    ShowMessage(“Text not found”); 
    }
    //———-

  16.TAdvStringGrid:: Ints[int ACol][int
ARow]以Integer类型的值来访谈单元格,假若读取失利,会触发非常.

  18.

  (1).增多Logo:TAdvStringGrid::AddIcon();
    原型:void __fastcall AddIcon(int ACol, int ARow, Graphics::TIcon
*aicon, TCellHAlign hal, TCellVAlign val)
  (2).增加旋转字体:TAdvStringGrid:: AddRotated;
    原型:void __fastcall AddRotated(int ACol, int ARow, short AAngle,
AnsiString s);
  (3).从ImageList中抽取图象加多到单元格中:TAdvStringGrid::
AddImageIdx;
    原型:void __fastcall AddImageIdx(int ACol, int ARow, int Aidx,
TCellHAlign hal, TCellVAlign val);
    参数Aidx为图片在ImageList中的索引.
  (4).向单元格中增添位图:TAdvStringGrid:: AddBitmap;
    原型:void __fastcall AddBitmap(int ACol, int ARow,
Graphics::TBitmap *ABmp, bool Transparent, TCellHAlign hal, TCellVAlign
val);
    参数bool Transparent设置是还是不是出示透明.
  (5).自动增多编号:AutoNumberCol
    TAdvStringGrid:: AutoNumberCol(int
ACol)方法,对点名的列从1进展编号,不对Fixed行中的列编号;
    用途:用于发生首列的自行编号。
  (6).向单元格中增加八个图象:TAdvStringGrid::AddMultiImage
  原型:void __fastcall AddMultiImage(int ACol, int ARow, int Dir,
TCellHAlignhal, TCellVAlign val);
  事实上只是向系统宣称一下,那么些单元格将停放四个图象,图象的充裕经过GridImages来增加。比如:

    AdvStringGrid2->AddMultiImage(5,1,0,haBeforeText,vaCenter);
    AdvStringGrid2->CellImages[5][1]->Add(0);
    AdvStringGrid2->CellImages[5][1]->Add(1);

  (7).假诺TAdvStringGrid::
EnableHTML属性启用,那么,单元格中输入HTML源代码,它将以HTML格式显示出来,比如:
    AdvStringGrid2->Cells[7][1]=”Easy HTML
    formatting”;
    AdvStringGrid2->Cells[7][2]=”Including <IMG src=” “\x022”
“idx:0” “\x022” “>
    AdvStringGrid2->Cells[7][3]=”Enjoy
    ———-
    miniHTML”;
    AdvStringGrid2->Cells[7][4]=”
    AdvStringGrid2->Cells[7][5]=”125
<SUP>9</SUP>/<SUB>16</SUB>”;
    这么些剧情在TAdvStringGrid中校以HTML格式呈现出来。

  (8).通过TAdvStringGrid::
RichEdit属性能够调用TAdvStringGrid的内置的RichEdit类,是一个Rich艾德it编辑器,能够采纳它管理RTF格式文档,然后使用TAdvStringGrid::RichToCell方法写入单元格.
    原型:void __fastcall RichToCell(int Col, int Row,
Comctrls::TRichEdit *Richeditor);
   
能够把用TAdvStringGrid::RichEdit::Clear()把RichEdit清空,再另行增多内容,然后再加多到单元格中。
   
能够经过TAdvStringGrid::RichEdit::SelAttributes来调治RichEdit的格式。

  (9).通过TAdvStringGrid:: AddProgress方法来在单元格中增加进程条
    原型:void __fastcall AddProgress(int ACol, int ARow,
Graphics::TColor FGColor, Graphics::TColor BKColor);
   
单元格的整数值正是眼下速度值,能够运用TAdvStringGrid::Ints[col,row]来寻访这几个值。

  (10).通过TAdvStringGrid::AddComment方法来加多注释。
    原型:void __fastcall AddComment(int ACol, int ARow, AnsiString
comment);
    加多注释之后,会在单元格的右上角展现一个小的辛丑革命的三角号,比如:
    AdvStringGrid2->AddComment(8,3,”This is a custom” “\x00D”
“comment for this cell”);
    AdvStringGrid2->Cells[8][3]=”Cell with comment”;

  (11).通过TAdvStringGrid加强型的HTML语法深入分析,增多其中单元格之间的链接,举个例子:
    AdvStringGrid2->Cells[8][4]=”
AdvStringGrid2->Cells[8][5]=” (12).通过TAdvStringGrid::
AddButton来在单元格中加多按键
    原型:void __fastcall AddButton(int ACol, int ARow, int bw, int
bh, AnsiString Caption, TCellHAlign hal, TCellVAlign val);
   
当增加的开关被按下时,OnButtonClick事件被触发(?经测量试验,无法触该事件)。

  19.在TAdvStringGrid::OnGetCellsColor()事件管理句柄中,能够对单元格的颜料和字体实行设置.

  21.增多可减少结点,外观上看起来好像于分组,
    方法:
    TAdvStringGrid::FixedCols=0;
    TAdvStringGrid::FixedColWidth=20;
    TAdvStringGrid::AddNode(2,4);
    TAdvStringGrid::AddNode(7,2);
    TAdvStringGrid::AddNode(13,4);
    TAdvStringGrid::AddNode()方法原型:
    void __fastcall AddNode(int ARow, int
Span);第二个参数为分组的超越度。

 22.进展具备结点:
    TAdvStringGrid:: ExpandAll()方法
   缩短全体结点:TAdvStringGrid:: ContractAll()方法
   TAdvStringGrid::CellNode->NodeType=cnFlat;
   TAdvStringGrid::CellNode->NodeType=cn3D;
   TAdvStringGrid::CellNode->NodeType=cnGlyph;
    以上五个属性设置StringGrid以结点的不二秘籍体现时的结点彰显风格。

  23.对TAdvStringGrid加多过滤
    使用TAdvStringGrid中预订义的一种Filter类: TFilterData
    例如:

    TFilterData* fd;
    AdvStringGrid3->Filter->Clear();
    fd = AdvStringGrid3->Filter->Add();
    fd->Condition =
ComboBox1->Items->Strings[ComboBox1->ItemIndex];
    fd->Column = 1;
    fd = AdvStringGrid3->Filter->Add();
   
fd->Con_dition=ComboBox2->Items->Strings[ComboBox2->ItemIndex];
    fd->Column = 3;
    AdvStringGrid3->FilterActive=true;

  24.自动调节列宽AutoSizeColumns
    原型:void __fastcall AutoSizeColumns(const bool DoFixedCols,
const int Padding)
    用第4个参数来钦定自动调治后要求非凡扩大的空间

  25.TAdvStringGrid的打印。
  使用TAdvPreviewDialog连接TAdvStringGrid来预览.那么些控件中提供了接口能够一向对分界面实行本地化。
  使用TAdvStringGrid的Print()方法来打字与印刷。打字与印刷设置调度TAdvStringGrid::TPrintSettins类的相关属性。

///
procedure TForm1.FormCreate(Sender: TObject);
begin
  AdvStringGrid1.FixedRows:=2;
  AdvStringGrid1.SaveFixedCells := false;
  AdvStringGrid1.MergeCells(1,0,2,1);
  AdvStringGrid1.MergeCells(3,0,2,1);
  AdvStringGrid1.Cells[1,0] := ‘<p align=”center”>
<b>Identification</b></p>’;
  AdvStringGrid1.Cells[1,1] := ‘Brand’;
  AdvStringGrid1.Cells[2,1] := ‘Type’;
  AdvStringGrid1.Cells[3,1] := ‘CC’;
  AdvStringGrid1.Cells[4,1] := ‘Pk’;
  AdvStringGrid1.Cells[3,0] := ‘<p
align=”center”><b>Power</b></p>’;
  AdvStringGrid1.BtnEdit.ButtonWidth := 24;
end;

 

  --本文来源于[TTT
BLOG]:

 

(提醒:转发时请必需保留版权消息照旧评释来源。)

    (1)如何设置表格固定的列数,如下图所示:

怎么着设置表格固定的列数,如下图所示:

           
  bf88必发唯一官网 7
此间一定的列数为3列,通过安装上边属性来退换定位的列数:

bf88必发唯一官网 8
此地一定的列数为3列,通过安装下边属性来改动定位的列数:

              AdvStringGrid.FixedCols:=n;(n为要稳固的列数值)
    (2)怎样从AdvStringGrid中读取和向AdvStringGrid中程导弹入值:

AdvStringGrid.FixedCols:=n;(n为要牢固的列数值)
怎样从AdvStringGrid中读取和向AdvStringGrid中程导弹入值:

      
AdvStringGrid.Cells[j,i]:=str;(向其单元格赋值)这里须求注意的是,j为列数,i为行数。

AdvStringGrid.Cells[j,i]:=str;这里必要专一的是,j为列数,i为行数。

    (3)怎么着在运营分界面中手动调解列宽与行宽,效果图如下所示:

怎样在运营分界面中手动调治列宽与行宽,效果图如下所示:

           
  bf88必发唯一官网 9
这只如上面性即能够在运维分界面中手动的调治行宽与列宽:

bf88必发唯一官网 10
那只如下边性即能够在运作分界面中手动的调动行宽与列宽:

     Options ->  goColsizing:=true 列宽

Options -> goColsizing:=true 列宽

     Options ->  goRowsizing:=true 行宽
    (4)怎么着使文字换行,并垂直居中,效果图如下:

Options -> goRowsizing:=true 行宽
如何使文字换行,并垂直居中,效果图如下:

          
  bf88必发唯一官网 11

bf88必发唯一官网 12

    把goRowsizing设置为true后,将WordWrap也安装为true;
    (5)如何使列宽依据单元格内容与列题目内容自动调治列宽

把goRowsizing设置为true后,将WordWrap也设置为true;
何以使列宽根据单元格内容与列标题内容自动调治列宽

     AdvStringGrid2.AutoSizeColumns(true,4);4意味前后留出的字节数。

AdvStringGrid2.AutoSizeColumns;4代表前后留出的字节数。

    (6)怎样下AdvStringGrid中增添CheckBox,并判定其是不是被入选的情事,效果图如下:

怎么样下AdvStringGrid中增加CheckBox,并判别其是不是被选中的意况,效果图如下:

        
   bf88必发唯一官网 13

bf88必发唯一官网 14

在窗体创制单元加多如下代码:

在窗体成立单元加多如下代码:

     for i:=1 to AdvStringGrid3.rowcount-1  do
     begin
       AdvStringGrid3.AddCheckBox(2,i,false,false);
     end;

for i:=1 to AdvStringGrid3.rowcount-1 do
begin
AdvStringGrid3.AddCheckBox(2,i,false,false);
end;

那就是说怎么着推断其是或不是被选用,并读取个中的值,参谋代码如下:

那便是说哪些判定其是或不是被增选,并读取在那之中的值,仿照效法代码如下:

    var

var

      flag:boolean;

flag:boolean;

    for j:=1 to m do (m为表格的行数)
    begin
      AdvStringGrid3.GetCheckBoxState(2,j,flag);
      if flag then
      begin

for j:=1 to m do
begin
AdvStringGrid3.GetCheckBoxState;
if flag then
begin

      …………

…………

      end;

end;

    (7)怎么样调节单元格总字体的颜料,例如对于某个不行数据希望彰显为革命,效果图如下:

哪些调节单元格总字体的水彩,举个例子对于部分十二分数据希望展现为黑古铜色,效果图如下:

         
  bf88必发唯一官网 15
编纂代码如下:
     AdvStringGrid2.FontColors[21,j]:=clred;

bf88必发唯一官网 16
编写制定代码如下:
AdvStringGrid2.FontColors[21,j]:=clred;

    (8)如何统一单元格:

如何统一单元格:

此处我所使用的点子是,把富有数据搜罗完了后来再统一单元格,合併后的成效图如下:

这里自身所使用的不二诀要是,把具有数据搜罗完了以后再统一单元格,合併后的效用图如下:

        
 bf88必发唯一官网 17
集合的有血有肉思路是如此的,先定义一个数组类型,把每列中值不均等的伊始地点记录下来,然后再进行统一,参谋代码如下:

bf88必发唯一官网 18
合併的求实思路是这么的,先定义一个数组类型,把每列中值不平等的起来地方记录下来,然后再拓宽联合,参谋代码如下:

    i:=0;
    setlength(ipos,100);
    for j:=1 to m do
    begin
      if
AdvStringGrid2.Cells[0,j]<>AdvStringGrid2.Cells[0,j+1] then
      begin
        ipos[i]:=j;
        i:=i+1;
      end;
    end;
    AdvStringGrid2.MergeCells(0,1,1,ipos[0]);
    AdvStringGrid2.MergeCells(23,1,1,ipos[0]);
    AdvStringGrid2.MergeCells(24,1,1,ipos[0]);
    if i>1 then
    begin
      for j:=0 to i-2 do
      begin
       
AdvStringGrid2.MergeCells(0,ipos[j]+1,1,ipos[j+1]-ipos[j]);
       
AdvStringGrid2.MergeCells(23,ipos[j]+1,1,ipos[j+1]-ipos[j]);
       
AdvStringGrid2.MergeCells(24,ipos[j]+1,1,ipos[j+1]-ipos[j]);
      end;
    end;
    (9)如何清空表格

i:=0;
setlength;
for j:=1 to m do
begin
if AdvStringGrid2.Cells[0,j]<>AdvStringGrid2.Cells[0,j+1]
then
begin
ipos[i]:=j;
i:=i+1;
end;
end;
AdvStringGrid2.MergeCells(0,1,1,ipos[0]);
AdvStringGrid2.MergeCells(23,1,1,ipos[0]);
AdvStringGrid2.MergeCells(24,1,1,ipos[0]);
if i>1 then
begin
for j:=0 to i-2 do
begin
AdvStringGrid2.MergeCells(0,ipos[j]+1,1,ipos[j+1]-ipos[j]);
AdvStringGrid2.MergeCells(23,ipos[j]+1,1,ipos[j+1]-ipos[j]);
AdvStringGrid2.MergeCells(24,ipos[j]+1,1,ipos[j+1]-ipos[j]);
end;
end;
怎么样清空表格

    使用Clear过程

使用Clear过程

    AdvStringGrid2.Clear;

AdvStringGrid2.Clear;

    (10)如何使单元格的持有剧情居中显得

怎么使单元格的有着剧情居中显得

    AdvStringGrid2.VAlignment:=vtacenter;

AdvStringGrid2.VAlignment:=vtacenter;

    for j:=0 to m do//TabSheet2富有单元格显示居中
    begin
      for i:=0 to AdvStringGrid2.ColCount-1 do
      begin
        AdvStringGrid2.Alignments[i,j]:=TaCenter;
      end;
    end; 

for j:=0 to m do//TabSheet2持有单元格展现居中
begin
for i:=0 to AdvStringGrid2.ColCount-1 do
begin
AdvStringGrid2.Alignments[i,j]:=TaCenter;
end;
end;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图