【问题标题】:Select Cell in TAdvStringGrid with hidden columns在 TAdvStringGrid 中选择具有隐藏列的单元格
【发布时间】:2013-08-03 10:48:28
【问题描述】:

我正在选择 TAdvStringGrid 中的某个单元格:

常量 我的科尔=4; 我的行=1; HiddenCol=2; 过程 TForm1.FormCreate(Sender: TObject); 开始 AdvStringGrid1.ColCount:=5; AdvStringGrid1.RowCount:=10; 结尾; 过程 TForm1.BtnHideClick(Sender: TObject); 开始 AdvStringGrid1.HideColumn(2); 结尾; 过程 TForm1.BtnSelectCellClick(Sender: TObject); 开始 AdvStringGrid1.SelectCells(MyCol,MyRow,MyCol,MyRow); 结尾;

但是,我的问题是,在该列被隐藏后,我需要选择的单元格将不会被选中,因为程序看到 ColCount 现在是 4 并且 col 5 处的单元格不再存在。无论隐藏列如何,我仍然可以选择单元格?

选择我的意思是关注单元格,并向用户显示选择了哪个单元格,而不仅仅是读取其字符串值。

【问题讨论】:

    标签: delphi interface delphi-2007 tms


    【解决方案1】:

    根据第 57 页的 TAdvStringGuide v6.1 开发人员指南,您可以使用 grid.AllCells(ACol, ARow)。描述说: “无论隐藏的列或行如何,都将网格单元格作为字符串访问。grid.AllCells 返回显示的单元格,即在可能通过事件 OnGetDisplText 处理真实单元格文本之后”。

    要显示选定的单元格,您可以使用它们提供的一些附加功能。从他们指南的第 131 页开始:

    TAdvStringGrid 还提供了一组函数,允许执行真实单元格索引到可见单元格索引的映射,反之亦然。这是通过以下方式提供的:

    function RealRowIndex(ARow: Integer): Integer;
    function RealColIndex(ACol: Integer): Integer;
    

    返回给定可见列或行索引的实际列或行索引

    function DisplRowIndex(ARow: Integer): Integer;
    function DisplColIndex(ACol: Integer): Integer;
    

    返回给定实际列或行索引的可见列或行索引。

    所以我认为您可以通过将最后一个方法更改为:

    procedure TForm1.BtnSelectCellClick(Sender: TObject);
    begin
      AdvStringGrid1.SelectCells(DisplColIndex(MyCol),DisplRowIndex(MyRow),DisplColIndex(MyCol),DisplRowIndex(MyRow));
    end;
    

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 2013-05-25
      • 1970-01-01
      • 2022-12-10
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多