首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免tStringGrid.Col & tStringGrid.Row的重复实现

如何避免tStringGrid.Col & tStringGrid.Row的重复实现
EN

Stack Overflow用户
提问于 2015-12-03 05:36:51
回答 2查看 569关注 0票数 0

我尝试从外部选择或单击一个单元格。

当我使用tStringGrid.Col和tStringGrid.Row选择一个单元格时,onSelectCell事件会运行两次。

我怎样才能把它处理一次?

如果使用tStringGridSelectCell事件来避免问题,则选择矩形不会移动到该位置。

代码语言:javascript
复制
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormClick(Sender: TObject);
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
  private
    TestCount: Integer;
  end;

procedure TForm1.FormClick(Sender: TObject);
var
  _Boolean: Boolean;
begin
  StringGrid1.Col := 2;
  StringGrid1.Row := 2;

  // StringGrid1SelectCell(Self, 2, 2, _Boolean); // the event runs once well but the cell is not visible when the position is out of sight.
end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
  // something to be implemented

  Inc(TestCount);

  Caption := IntToStr(TestCount); // testcount is 2
end;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-03 07:22:30

我如何使它(OnSelectCell)被处理一次?

暂时禁用TSelectCellEvent

代码语言:javascript
复制
procedure TForm16.Button1Click(Sender: TObject);
var
  temp: TSelectCellEvent;
begin
  temp := StringGrid1.OnSelectCell;
  StringGrid1.OnSelectCell := nil;
  StringGrid1.Col := 2;
  StringGrid1.OnSelectCell := temp;
  StringGrid1.Row := 2;
  StringGrid1.SetFocus; // Optional, can be useful if goEditing is set
end;
票数 2
EN

Stack Overflow用户

发布于 2015-12-03 07:04:00

可以使用TStringGrid.Selection属性设置选定的单元格/单元格。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34058625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档