StringGrid控件的属性和使用

StringGrid控件的属性和使用

         简介StringGrid控件是一种很常用的表格显示控件,大家都知道在数据量比较大、需要按条目显示的时候,用表格显示会使整个显示简洁大方,有条理。

         StringGrid控件用于建立显示字符串的网格,每个单元格都可以看作是显示一个字符串变量的值,整个表格则可以看作一个字符串的二维数组按顺序依次显示出来(eg.StringGrid1[ColNum,RowNum])。

最后希望这边文章对于需要熟悉StringGrid控件使用的人能够提供一点帮助。

 

一.StringGrid控件的一些重要属性

1、固定行及固定列:  (没有固定行列的时候,不能在运行时调节各个单元格的宽度和高度)

 StringGrid.FixedCols := 固定行数;

 StringGrid.FixedRows := 固定列数;  

 StringGrid.FixedColor := 固定行列的颜色;  

 StringGrid.Color := 未固定行列的颜色(资料区)

 StringGrid.ColCount:= 当前行数(未固定,可改变);

 StringGrid.RowCount := 当前列数(未固定,可改变)

 

2、资料区行列的宽度和高度: 

 StringGrid.DefaultColWidth := 內定全部的宽度;  

 StringGrid.DefaultRowHeight := 內定全部的高度;  

 StringGrid.ColWidths[Index:Longint]:=某一行整行的宽度;    

 StringGrid.RowHeights[Index:Longint]:=某一列整列之高度;  

 

3、资料区(CELL)指定(将某一行列停在资料区最左上角)

 StringGrid.LeftCol:=某一行號;  

 StringGrid.TopRow:=某一列號;  

 

4、焦点移动到某一单元格内:    

 StringGrid.Row:=?;   

 StringGrid.Col:=?;  

 

5、设定资料区行数和列数:(包含固定行、列亦算在內)    

 StringGrid.RowCount:=?;  

 StringGrid.ColCount:=?;  

 

6、给某一个单元格赋值(0开始)  

 StringGrid.Cells[Col   ,   Row]:=字串;  

 

7、判断鼠标处于哪一个单元格中  

  StringGridMouse事件中(UP,DOWNMOVE)下:  

  VAR C , R  :   Longint;  

 StringGrid.MouseToCell(X,Y,C,R);  {X,YMOUSE事件传入}  

  {取回   C  ,   R   即为目前之Col   ,  Row   }       

   

 

8StringGridOptions属性:  

  若要在执行中开启合租关闭Options某一功能如   goTABS’,则可以如下:  

  开启:  StringGrid.Options:=   StringGrid.Options   +  [goTABS];  

  关闭:  StringGrid.Options:=   StringGrid.Options   -  [goTABS];  

 

 goFixedHorzLine   固定列之间的水平分割线 

 goFixedVertLine    固定行之间的垂直分割线  

 goHorzLine        可滚动列之间的水平分割线   

 goVertLine         可滚动行之间的垂直分割线 

 goRangeSelect      可多重选择单元,如果包含goEditing,则忽略goRangeSelect

 goDrawFocusSelected   用鼠标多重选择时,第一个选择的单元反白  

 goRowSizing        用鼠标可改变列高  

 goColSizing         用鼠标可改变行寬  

 goRowMoving       用鼠标可移动可滚动行  

 goColMoving        用鼠标可移动可滚动列 

  goEditing          可编辑单元的内容 

 goAlwaysShowEditor   表格总是编辑模式,不需要F2ENTER即有等待输入的游标。如果Options不包含goEditing或包含goRowSelect,goAlwaysShowEditor无效。

 goTabs              TABShift+TAB可切换表格单元

 goRowSelect   用滑鼠點一下可選取整列(亦與滑鼠可多重選擇互斥)  

 goThumbTracking   捲軸動時GRID跟著動,否則捲軸動完放開,GRID才動  

 

二.StringGrid控件的一些常用操作属性

         StringGrid控件在使用时,显示的数据会在程序里对应定义一种记录类型,一行数据对应一条数据,下面以一些程序为例讲解。

 

1、 StringGrid表头初始化:  

 

procedure TMainForm.StringGridDisIni;// StringGrid表头初始化

begin

 stringGrid1.RowCount:=OiltankNum+1;

 StringGrid1.Cells[0,0]:='多功能罐';

 StringGrid1.Cells[1,0]:='所属区域';

 StringGrid1.Cells[2,0]:='连接方式';

 StringGrid1.Cells[3,0]:='终端IP';

 StringGrid1.Cells[4,0]:='液位计地址';

 StringGrid1.Cells[5,0]:='终端登录号';

 StringGrid1.Cells[6,0]:='是否连接';

 StringGrid1.Cells[7,0]:='采集时间';

 StringGrid1.Cells[8,0]:='液位';

 StringGrid1.Cells[9,0]:='油量';

 StringGrid1.Cells[10,0]:='是否装车';

 StringGrid1.Cells[11,0]:='装车体积';

 StringGrid1.Cells[12,0]:='罐运行状态';

end;

 

2StringGrid一行数据显示刷新:

         下面的事件是刷新一行的数据,如果需要刷新整个表格,做一个循环就可以了。

procedure TMainForm.StringGridUpdateItem(row:Integer;itemindex:Integer);

begin

     StringGrid1.Cells[0,row]:=oiltank[itemindex].TankName;

  StringGrid1.Cells[1,row]:=oiltank[itemindex].BelongBlockName+'/'

+oiltank[itemindex].BelongControlCenterName+'/'

+oiltank[itemindex].TankName;

     StringGrid1.Cells[2,row]:=oiltank[itemindex].CollectMode;

     StringGrid1.Cells[3,row]:=oiltank[itemindex].IpAddress;

     StringGrid1.Cells[4,row]:=IntToStr(oiltank[itemindex].DeviceAddress);

     StringGrid1.Cells[5,row]:=oiltank[itemindex].GPRSID;

     StringGrid1.Cells[6,row]:=oiltankSCSJ[itemindex].ConnectStus;

     StringGrid1.Cells[7,row]:=DateTimeToStr(oiltankSCSJ[itemindex].TMRecord);

     StringGrid1.Cells[8,row]:=FormatFloat('0.000',oiltankSCSJ[itemindex].Height);

     StringGrid1.Cells[9,row]:=FormatFloat('0.000',oiltankSCSJ[itemindex].Volume);

     StringGrid1.Cells[10,row]:=oiltankSCSJ[itemindex].ZCFlag;              

     StringGrid1.Cells[11,row]:=FormatFloat('0.000',oiltankSCSJ[itemindex].RecordVolume);

     StringGrid1.Cells[12,row]:=oiltankSCSJ[itemindex].AlarmRecord[1].AlertReason;

end;

 

3StringGrid单元格点击事件的使用:

//想编写使StringGrid中的一列具有Check功能,和CheckBox效果一样,单击后yesno相互切换显示

procedure TForm1.gridClick(Sender:TObject);

begin

  ifgrid.Cells[grid.col,grid.row]='yes' then

   grid.Cells[grid.col,grid.row]:='no'

 else

   grid.Cells[grid.col,grid.row]:='yes';

end;

 

4// 添加一行

procedureTReferContentForm.mmiN1Click(Sender: TObject);

var

 SGrid: TsuiStringGrid;

begin

 SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  ifSGrid <> nil then

 begin

   SGrid.RowCount := SGrid.RowCount + 1;

   SetSGridTitle(SGrid);

 end;

end;

 

5// 插入一行

procedureTReferContentForm.mmiN2Click(Sender: TObject);

var

  i,curRow: integer;

 SGrid: TsuiStringGrid;

begin

 SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  ifSGrid <> nil then

 begin

   curRow := SGrid.Row; //记录当前选定行的位置

   SGrid.rowcount := SGrid.rowcount + 1;

   for i := SGrid.rowcount - 1 downto curRow + 1 do

     SGrid.Rows[i] := SGrid.Rows[i - 1];

   SGrid.Rows[curRow].Clear;

   SetSGridTitle(SGrid);

 end;

end;

  

6// 删除当前一行

procedureTReferContentForm.mmiN3Click(Sender: TObject);

var

  i:integer;

 SGrid: TsuiStringGrid;

begin

 SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  ifSGrid <> nil then

 begin

   for i := SGrid.row to SGrid.RowCount - 1 do

     SGrid.Rows[i] := SGrid.Rows[i + 1];

   SGrid.RowCount := SGrid.RowCount - 1; //删除

   SetSGridTitle(SGrid);

 end;

end;

   

7// 添加一列

procedureTReferContentForm.mmiN5Click(Sender: TObject);

var

 SGrid: TsuiStringGrid;

begin

 SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  ifSGrid <> nil then

   SGrid.ColCount := SGrid.ColCount + 1;

 SetSGridTitle(SGrid);

end;

 

8// 插入一列

procedureTReferContentForm.mmiN6Click(Sender: TObject);

var

  i,CurCol: integer;

 SGrid: TsuiStringGrid;

begin

 SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  ifSGrid <> nil then

 begin

   CurCol := SGrid.Col; //记录当前选定行的位置

   SGrid.ColCount := SGrid.ColCount + 1;

   for i := SGrid.ColCount - 1 downto CurCol + 1 do

     SGrid.Cols[i] := SGrid.Cols[i - 1];

   SGrid.Cols[CurCol].Clear;

 end;

 SetSGridTitle(SGrid);

end;

 

9// 删除一列

procedureTReferContentForm.mmiN7Click(Sender: TObject);

var

  i:integer;

 SGrid: TsuiStringGrid;

begin

 SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  ifSGrid <> nil then

 begin

   for i := SGrid.Col to SGrid.ColCount - 1 do

     SGrid.Cols[i] := SGrid.Cols[i + 1];

   SGrid.ColCount := SGrid.ColCount - 1; //删除

 end;

 SetSGridTitle(SGrid);

end;

  

10// 清空

procedure TReferContentForm.mmiN9Click(Sender:TObject);

var

 SGrid: TsuiStringGrid;

begin

 SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  ifSGrid <> nil then

 begin

   ClearSGrid(SGrid, 5, 5)

 end;

 SetSGridTitle(SGrid);

end;

 

你可能感兴趣的:(Delphi)