Delphi标签顺序

时间:2012-01-16 14:24:24

标签: forms delphi tab-ordering

我在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计算项目

3 个答案:

答案 0 :(得分:23)

TabOrder是连续的。第一个控件的TabOrder0。下一个TabOrder 1,依此类推。你不能留下任何空白。

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

enter image description here

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

答案 1 :(得分:12)

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

下面你可以看到一个功能。当您将组件放入表单时,CnPack可以显示Tab Orders。当您有许多编辑,按钮或面板时,这可以提供帮助 CnPack Display TabOrders in Designing Mode

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

我发现他们在设计大型表格时非常有帮助。 另一个选项是GExperts Tab Order屏幕,它具有相同的“按位置排序”功能: enter image description here

答案 2 :(得分:1)

我设置Tab键顺序的方法是按顺序选择每个组件,然后将控件剪切到剪贴板( CTRL-X ),然后粘贴( CTRL -V )他们又回来了。