Delphi StringGrid常用属性和常用操作

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;

(转载)StringGrid常用属性和常用操作的更多相关文章

  1. (转载)Delphi StringGrid常用属性和常用操作

    Delphi StringGrid常用属性和常用操作 StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控 ...

  2. Delphi StringGrid常用属性和常用操作

    StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控制网格外观念的属性,以及利用表格的结构响应用户操作的事 ...

  3. JavaScript BOM-11-BOM的核心-window对象; window对象的控制,弹出窗口方法; 超时调用; 间歇调用; location对象常用属性; 位置操作--location.reaplace,location.reload(); BOM中的history对象; Screen对象及其常用属性; Navigator对象;

    JavaScript BOM 学习目标 1.掌握什么是BOM 2.掌握BOM的核心-window对象 3.掌握window对象的控制.弹出窗口方法 什么是bom BOM(browser object ...

  4. js如何操作表格(常用属性方法汇总)

    js如何操作表格(常用属性方法汇总) 一.总结 一句话总结: 二.表格相关的属性和方法 1.1 Table 对象集合 cells[] 返回包含表格中所有单元格的一个数组. 语法:tableObject ...

  5. (转载)常用的Mysql数据库操作语句大全

    打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...

  6. HTML a标签、4个伪类、常用属性(下载)、锚链接(待扩展:邮件、电话、短信、GPS)

    HTML 超链接<a> 1.超链接可以是一个字.一个词.一组词.一幅图像,您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分. 2.当您把鼠标指针移动到网页中的某个链接上时,箭头会 ...

  7. iOS导航控制器常用函数与navigationBar常用属性

    导航控制器常用函数触发时机 当视图控制器的View将要出现时触发 - (void)viewWillAppear:(BOOL)animated 当视图控制器的View已经出现时触发 - (void)vi ...

  8. WPF DataGrid常用属性记录

    WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...

  9. Swift2.0 中的String(一):常用属性

    字符串算是平常用的比较多.花样也比较多的一个类型,昨天有空把相关的一些常用操作都写了一遍,总结出来.其实iOS里面的字符串更复杂,还有NSString系列等等,那些API太多将来需要用的时候再慢慢学. ...

随机推荐

  1. Android之AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

  2. 征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)

    有日子没写博客了,真的是忙得要疯掉. 完成项目基础架构搭建工作,解决了核心技术问题,接着需要快速的调研下基于Spring框架下的Redis操作. 相关链接: 征服 Redis 征服 Redis + J ...

  3. 快速高效的破解MySQL本地和远程密码

    http://www.kankanews.com/ICkengine/archives/212.shtml 快速的 MySQL 本地和远程密码破解!首先需要对数据库维护人员说明的是,不必紧张,你无需修 ...

  4. C#知识总结

    Control类属于Sytem的命名空间 表示控制台标准的输入输出和错误流提供用于从控制台读取单个字符或正行的方法还提供了很多写入的的方法, static 关键字是对方法的修饰 二 数据类型的分类 数 ...

  5. android应用版本更新功能---完整版

    源码下载地址:csdn下载地址:http://download.csdn.net/download/csdn576038874/9526085 博客园下载地址:http://files.cnblogs ...

  6. AWS IAM (Identity and Access Management) 使用笔记

    为 AWS 管理控制台登录页面 URL 创建别名 $ aws iam create-account-alias --account-alias <value> 创建用户 $ aws iam ...

  7. C# Quartz.Net 定时任务的简单使用

    最近做了一个定时执行任务的软件. 执行任务时,会使用log4net记录日志,如果执行任务有异常,则发送邮件给指定的对象. 我做的是每天的9点和16点执行一次任务,以此记录: 首先,获得Quartz.N ...

  8. Magento模型和ORM基础

    对于任何一个MVC架构,模型(Model)层的实现都是占据了很大一部分.对于Magento来说,模型占据了一个更加重要的位置,因为它常常包含了一部分商业逻辑代码(可以说它对,也可以说它错).这些代码在 ...

  9. YII中表单验证

    关于表单的验证有三种: 1.yii的客户端验证 2.yii的服务器端验证 3.yii的ajax验证 例如: 1.在表单对应的模型中定义一个rules方法(该方添加后,在表单提交时,将自动被调用) pu ...

  10. html5 meta标签属性整理

    声明文档使用的字符编码 <meta charset='utf-8'> 声明文档的兼容模式 //指示IE以目前可用的最高模式显示内容<meta http-equiv="X-U ...