zoukankan      html  css  js  c++  java
  • (转载)StringGrid常用属性和常用操作

    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;

  • 相关阅读:
    postman 的基础使用篇(一)
    C# struct
    细说javascript typeof操作符
    javascript-void keyword
    深圳求生记
    博客园开篇--对程序员的一点看法
    京东2018校园招聘 数据开发
    数据结构之哈希、哈希函数、哈希表
    scrapy入门教程
    linux学习笔记1
  • 原文地址:https://www.cnblogs.com/angelbd/p/3373110.html
Copyright © 2011-2022 走看看