【问题标题】:Delphi : move between string grid with tabDelphi:使用选项卡在字符串网格之间移动
【发布时间】:2017-07-18 09:31:48
【问题描述】:

我在一个表单中有许多 TStringGrid 组件。我想使用 tab 在 StringGrids 之间移动。

问题是,当 goTabs 被激活时,它会很好地在 StringGrid 的单元格之间移动,但是一旦选择了右下角的单元格,下一个标签点击就会选择同一个 StringGrid 的左上角单元格。

我怎样才能覆盖它?

谢谢。

【问题讨论】:

  • 这对您的用户来说不会是一个有趣的 UI。对我来说,TAB 应该在控件之间移动,或者在网格中的单元格之间移动,但不能同时在两者之间移动。您真的希望您的用户在一个控件中的所有单元格中进行 TAB 键,只是为了到达下一个控件。当存在单个主导网格时,网格内的选项卡适用于电子表格程序。
  • 另外,如果你真的坚持要像这样向前跳转,请记住,你也需要实现反向跳转。
  • 是的,我确实想这样做。它也像有很多编辑框,你只是从一个标签到另一个,所以我不觉得它那么不愉快或不直观。关于如何实现它的任何想法?
  • 当您的网格包含数百个单元格时会发生什么?
  • 无论如何,这很容易解决。你让你自己的网格后代。然后覆盖KeyDown 方法。然后当你在右下角的单元格(或左上角是ssShift in Shift)时改变行为

标签: delphi tabs tstringgrid


【解决方案1】:

那就这样吧!谢谢大家。

procedure TfrChild.Grd0KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_TAB) and (Grd0.row = Grd0.RowCount - 1) and
    (Grd0.col = Grd0.ColCount - 1) then
  begin
    Grd1.row := 1;
    Grd1.col := 0;
    Grd1.SetFocus;
  end;

end;

【讨论】:

  • 不处理 shift tab 或其他修饰符
  • 不,不是因为我选择不这样做。一种方式方向足以满足它的需要。我认为对答案投反对票是不公平的
  • 可怜可怜的用户,除了这个残缺的控件之外,SHIFT+TAB 在其他任何地方都可以使用,即使在您的程序中也是如此。这很容易处理。
猜你喜欢
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多