【问题标题】:How can I do inverse selection in AdvStringGrid?如何在 TAdvStringGrid 中反转选择?
【发布时间】:2011-12-03 14:38:16
【问题描述】:

如何在 AdvStringGrid (TMS) 中进行反向选择?

【问题讨论】:

  • 请努力解释你的意思
  • 我认为 OP 意味着他想反转选择。真的有那么难理解吗? +1
  • 例如在当前选择单元格 2 和 3 的 1 x 4 网格中,必须选择单元格 1 和 4。
  • 反转选择”可能吗?

标签: delphi tms


【解决方案1】:

假设 NGLN 是正确的,您需要在 Grid.MouseActions 中设置正确的 Disjunct...Select 选项来选择您允许的选择类型,然后您可以调用此过程:

PROCEDURE InvertSelection(Grid : TAdvStringGrid);
  VAR
    C,R : Cardinal;

  BEGIN
    IF Grid.MouseActions.DisjunctCellSelect THEN
      FOR R:=Grid.FixedRows TO PRED(Grid.RowCount) DO FOR C:=Grid.FixedCols TO PRED(Grid.ColCount) DO Grid.SelectedCells[C,R]:=NOT Grid.SelectedCells[C,R]
    ELSE IF Grid.MouseActions.DisjunctRowSelect THEN
      FOR R:=Grid.FixedRows TO PRED(Grid.RowCount) DO Grid.RowSelect[R]:=NOT Grid.RowSelect[R]
    ELSE IF Grid.MouseActions.DisjunctColSelect THEN
      FOR C:=Grid.FixedCols TO PRED(Grid.ColCount) DO Grid.ColSelect[C]:=NOT Grid.ColSelect[C]
  END;

这将使所有未选择的行/列/单元格被选中,反之亦然。

【讨论】:

  • 对不起,这个功能不起作用。您是否尝试使用此代码?
  • @YoungMaster,我已经测试过了,它可以工作。您可能错过了如何在您的TAdvStringGrid 上将MouseActions.DisjunctCellSelectMouseActions.DisjunctRowSelectMouseActions.DisjunctColSelect 属性设置为True 的部分。必须设置其中之一,以允许您选择矩形以外的其他内容。这是完全可以接受的答案;)
猜你喜欢
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多