Delphi标签顺序

Tho*_*s O 8 forms delphi tab-ordering

我在德尔福形式(Embarcadero®Delphi®2010版本14.0)上的选项卡顺序是不正确的,这意味着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;
Run Code Online (Sandbox Code Playgroud)

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

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

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

这是我的A2计算项目

Dav*_*nan 23

TabOrder是连续的.首先控制了TabOrder的0.接下来的具有TabOrder的1等等.你不能留下任何空白.

虽然您可以通过TabOrder编程方式进行分配,但我个人觉得最简单的方法是使用GUI来完成.右键单击表单,或者确实在容器控件上,然后选择Tab Order菜单项.然后你会看到一个这样的对话框:

在此输入图像描述

您可以使用箭头按钮重新排序,也可以直接拖动项目进行重新排序.它在我的视图中工作得相当好,但您必须记住包含其他控件(例如面板,标签页等)的控件具有自己的Tab键顺序.对于此类控件,您需要选择该控件,右键单击,然后修改该容器子项的Tab键顺序.


EMB*_*osa 14

如果我确实理解你,CnPack可以帮助设计时间.

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

另一个功能是按钮"表单中的自动设置选项卡订单",使用每个控件的位置设置选项卡订单以定义它的Tab顺序.按下按钮后,请参见下面相同的表格.

我发现他们在设计大型表格时非常有帮助.另一个选项是GExperts Tab Order屏幕,它具有相同的"按位置排序"功能: 在此输入图像描述