8

我在 Delphi(Embarcadero® Delphi® 2010 版本 14.0)中的表单上的 Tab 键顺序不正确,这意味着 Tab 键跳到表单中看似随机的项目。

但是,当我在 Delphi 中更改它时,它会以相同的错误顺序为我重新排列它们!

所以,我决定以编程方式分配它们:

procedure FixDelphiTabOrder;
begin
  Form2.ButtonClear.TabOrder := 2000;
  Form2.ButtonExport.TabOrder := 1900;
  Form2.ButtonNew.TabOrder := 1800;
  Form2.MaxFreq.TabOrder := 1700;
  Form2.MinFreq.TabOrder := 1600;
  Form2.Summary.TabOrder := 1500;
  Form2.Plot6dB.TabOrder := 1400;
  Form2.Plot3dB.TabOrder := 1300;
  Form2.Use_dBs.TabOrder := 1200;
  Form2.PlotPoints.TabOrder := 1100;
  Form2.PlotPhase.TabOrder := 1000;
  Form2.Prop8Value.TabOrder := 900;
  Form2.Prop7Value.TabOrder := 800;
  Form2.Prop6Value.TabOrder := 700;
  Form2.Prop5Value.TabOrder := 600;
  Form2.Prop4Value.TabOrder := 500;
  Form2.Prop3Value.TabOrder := 400;
  Form2.Prop2Value.TabOrder := 300;
  Form2.Prop1Value.TabOrder := 200;
  Form2.FilterType.TabOrder := 100;
  ShowMessage(IntToStr(Form2.Prop1Value.TabOrder));
end;

(我尝试向后和向前分配它;它做同样的事情。)

但这仍然行不通。消息框每次弹出 7 个而不是 100 个。有些东西一直在改变顺序,但这不是我的代码。

为什么会这样,是否有可能修复它?

这是我的 A2 计算项目

4

3 回答 3

25

TabOrder是连续的。第一个控件TabOrder0。下有TabOrderof1等。你不能留下任何空隙。

虽然您可以通过TabOrder编程方式进行分配,但我个人认为使用 GUI 最容易做到这一点。右键单击表单,或者实际上是容器控件,然后选择Tab Order菜单项。然后你会看到这样的对话框:

在此处输入图像描述

您可以使用箭头按钮重新排序,也可以简单地拖动项目重新排序。在我看来,它工作得相当好,但您必须记住,包含其他控件(例如面板、选项卡等)的控件有自己的选项卡顺序。对于这样的控件,您需要选择该控件,右键单击,然后修改该容器子项的 Tab 键顺序。

于 2012-01-16T14:27:10.403 回答
15

如果我确实很了解您,CnPack可以在设计时提供帮助。

您可以在下面看到一个功能。当您将组件放入表单时,CnPack 可以向您显示 Tab Orders。当您有许多编辑、按钮或面板时,这会有所帮助。
CnPack 在设计模式下显示 TabOrders

另一个功能是“在表单中自动设置 Tab 键顺序”按钮,它使用每个控件的位置来设置 Tab 键顺序来定义它的 Tab 键顺序。按下按钮后,请参阅下面的相同表格。

我发现它们在设计大型表单时非常有帮助。另一种选择是GExperts Tab Order 屏幕,它具有相同的“按位置排序”功能: 在此处输入图像描述

于 2012-01-16T18:17:58.117 回答
3

我设置 Tab 键顺序的方法是按照您想要的 Tab 键顺序选择每个组件,然后将控件剪切到剪贴板 ( ),然后将它们再次CTRL-X粘贴 ( )。CTRL-V

于 2012-01-17T01:44:32.030 回答