StringGrid使用详解

 

Delphi StringGrid常用属性和常用操作

分类: Delphi   7435人阅读   评论(0)   收藏   举报
 

        StringGrid组件用于建立显示字符串的网格,与电子表格相似。它可使表格中的字符串和相关对象操作简单化。StringGrid组件提供了许多可控制网格外观念的属性,以及利用表格的结构响应用户操作的事件和方法。StringGrid具有关联对象与网格中的每个字符串的作用,这些对象为用户封装了字符串表示的信息或行为。

 

一、Delphi StringGrid控件的属性及使用说明

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

  StringGrid.FixedCols := 固定行数;

  StringGrid.FixedRows := 固定列数;  

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

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

 

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、判断鼠标处于哪一个单元格中  

  在StringGrid的Mouse事件中(UP,DOWN或MOVE)下:  

  VAR   C   ,   R   :   Longint;  

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

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

   

8、StringGrid之Options属性:  

  若要在执行中开启合租关闭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   表格总是编辑模式,不需要F2或ENTER即有等待输入的游标。如果Options不包含goEditing或包含goRowSelect,则goAlwaysShowEditor无效。

  goTabs              用TAB及Shift+TAB可切换表格单元

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

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

 

一、Delphi StringGrid控件的常用操作代码

// 初始化StirngGrid的首行和首列

procedure TReferContentForm.SetSGridTitle(SGrid: TSuiStringGrid);

var

  ColIndex, RowIndex: integer;

begin

  //画第一行(标题栏)

  for colIndex := 1 to SGrid.ColCount do

  begin

    SGrid.Cells[colIndex, 0] := '列名' + Chr(ord('A') - 1 + colIndex);

  end;

 

  //画第一列(数字栏)

  SGrid.ColWidths[0] := 30;

  SGrid.Cells[0, 0] := '序列';

  for RowIndex := 1 to SGrid.RowCount - 1 do

  begin

    SGrid.Cells[0, RowIndex] := IntToStr(RowIndex);

  end;

end;

 

// 清楚StirngGrid,指定行数和列数

procedure TReferContentForm.ClearSGrid(SGrid: TSuiStringGrid; aRow, aCol: integer);

var

  i: integer;

begin

  SGrid.RowCount := aRow;

  SGrid.ColCount := aCol;

  for i := 0 to SGrid.RowCount - 1 do //如果不清表头则从1开始

    SGrid.Rows[i].Clear;

  setSGridTitle(SGrid);

end;

 

// 添加一行

procedure TReferContentForm.mmiN1Click(Sender: TObject);

var

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

  begin

    SGrid.RowCount := SGrid.RowCount + 1;

    SetSGridTitle(SGrid);

  end;

end;

 

// 插入一行

procedure TReferContentForm.mmiN2Click(Sender: TObject);

var

  i, curRow: integer;

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> 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;

 

// 删除当前一行

procedure TReferContentForm.mmiN3Click(Sender: TObject);

var

  i: integer;

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> 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;

 

// 添加一列

procedure TReferContentForm.mmiN5Click(Sender: TObject);

var

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

    SGrid.ColCount := SGrid.ColCount + 1;

  SetSGridTitle(SGrid);

end;

 

// 插入一列

procedure TReferContentForm.mmiN6Click(Sender: TObject);

var

  i, CurCol: integer;

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> 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;

 

// 删除一列

procedure TReferContentForm.mmiN7Click(Sender: TObject);

var

  i: integer;

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> 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;

 

// 清空

procedure TReferContentForm.mmiN9Click(Sender: TObject);

var

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

  begin

    ClearSGrid(SGrid, 5, 5)

  end;

  SetSGridTitle(SGrid);

end;

 

 // 右击选择单元格

procedure TReferContentForm.suiStringGridContentMouseDown(Sender: TObject;

  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

  if (Button = mbRight) then

  begin

    SendMessage(SGridContent.Handle, WM_LBUTTONDOWN, 0, MAKELONG(x, y));

    SendMessage(SGridContent.Handle, WM_LBUTTONUP, 0, MAKELONG(x, y));

  end;

end;

 

procedure TReferContentForm.FormShow(Sender: TObject);

begin

  SetSGridTitle(SGridContent);

end;

 

// 把标题栏和数字列中是内容,居中显现

procedure TReferContentForm.SGridContentDrawCell(Sender: TObject; ACol,

  ARow: Integer; Rect: TRect; State: TGridDrawState);

var

  s: string;

  r: TRect;

begin

  if (ACol = 0) or (ARow = 0) then

  begin

    with TSuiStringGrid(Sender) do

    begin

      Canvas.Brush.Color := $00F0DDCE;

      Canvas.FillRect(Rect);

      s := Cells[ACol, ARow];

      r := Rect;

      DrawText(Canvas.Handle, PChar(s), Length(s), r, DT_CENTER or DT_SINGLELINE or DT_VCENTER);

    end

  end

end;

 

转载自:http://blog.csdn.net/xiongmao000738/article/details/7014323

更多 0

转载于:https://www.cnblogs.com/vage/p/3550308.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

全部实例代码。目录如下: ToolBar工具栏控件的使用 动态建立主菜单选项 窗口界面的动态分隔条 动态设置选项卡页面 在标题栏中自定义按钮 窗体开合窗帘效果 Windows XP界面效果 实现OutLook滚动工具栏效果 在下拉列表框中显示树形视图 自定义系统的About项 修改系统级菜单 实现透明窗体效果 爆破特技窗体 只允许建立一次子窗体的MDI程序 从外部DLL中调用子窗口 新颖的资源管理器界面 如何生成半圆形窗口 制作字幕滚动窗体 详解Canvas生成渐变色窗口背景 WINAPM风格磁化窗口 软件封面的图片显示制作 实现图片的任意角度旋转 奇妙的拼图游戏 使用PaintBox控件制作画图程序 使用DrawGrid控件制作五子棋 多彩的数据报表 按压缩比将BMP转换为JPG 16位真彩转换到256色 调整图片的RGB对比度 实现图像的灰度级处理效果 3种像素历遍方法的比较和实现 实现屏幕拷贝 实现图像漫游 4种幕布式图像显示技巧 盘旋法实现9种滤镜效果 图形朦胧叠合显示技巧 给MDI主窗体增加背景 实现图像的淡入淡出显示 多媒体播放器 播放AVI文件 根据客户端IP地址获取计算机名 实现多线程IP和DomainName相互转换 Windows2000下的Popup发送功能 如何实现Ping操作 实现多线程共享探测 实现Windows95/98的I/O端口读写 收发电子邮件与监视网络服务器资源 使用WebBrower制作浏览器 可视化的Ping工具 使用IdMappedPortTCP进行端口映射 动态设置ODBC数据源 用ADO控件打开Access数据库 DBGrid中的记录到Html页面的转换 在DBGrid中实现任意方向查找 在DBGrid中通过动态下拉列表查找记录 用DBGrid组件制作下拉列表形式的提示框 利用书签处理DBGrid中的多个记录 将ComboBox中的内容直接拖放到DBGrid里 如何在DBGrid里放置图标 DBGrid控件精彩组合 DBChart图表控件的使用StringGrid组件中显示查询结果 使用流对象(Tstream)实现数据表中Tmemo字段的显示 如何动态建立SQLServer ODBC SQL浏览器 在SQL查询中使用动态参数 事务工作原理 标准/模糊查询 筛选数据 数据字典查看器 TDecisionGraph决策组件的使用 明细表(Master/Detail)结构 像处理文本资料一样处理数据表中的信息 远程数据库登录 远程数据库的离线处理 在远程数据库中实现主从表关系 动态设置远程数据库的查询参数 在远程数据库中计算统计值 多线程与数据库 使用远程存储过程 数据模块的同步显示 建立Web服务的数据提供端 建立Web服务的数据访问端 开发WebSnap数据库程序 建立ActiveForm数据浏览 建立数据查询WebServices服务器端 数据查询Web服务客户端开发 基于WAP的手机无线应用 建立基本Web数据库服务器应用 建立类型库编辑DataSnap服务端 建立查询条件Web数据库服务器应用 建立基本MTS服务端 建立MTS数据访问客户端 建立IntraWeb数据浏览 将程序图标设置到Windows系统托盘 取得和修改文件的创建和修改日期 通过流式数据实现文件分割与合并 实现指定扩展名文件和相应程序的关联 获取汉字拼音的首字母 监视剪贴板 在IE工具栏上增加一个按钮图标 软件注册机制的建立 复活节彩蛋的制作 SkinEngine控件——XP换肤 ActionList——应用程序通用功能列表 OleContainer——OLE容器 将程序项设置到控制面板 艺术化排列桌面图标 Delphi中的ini文件的读写 建立键盘鼠标动作记录与回放 实现指定目录下的文件查询 实现对系统的操作监视 系统级热键的实现 检测NumLock、Insert、CapsLock、ScrollLock键的状态
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值