我在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计算项目
答案 0 :(得分:23)
TabOrder
是连续的。第一个控件的TabOrder
为0
。下一个TabOrder
1
,依此类推。你不能留下任何空白。
虽然您可以通过编程方式分配TabOrder
,但我个人觉得使用GUI最简单。右键单击表单,或者确实在容器控件上,然后选择 Tab Order 菜单项。然后你会看到一个这样的对话框:
您可以使用箭头按钮重新排序,也可以直接拖动项目进行重新排序。它在我的视图中工作得相当好,但您必须记住包含其他控件(例如面板,标签页等)的控件具有自己的Tab键顺序。对于此类控件,您需要选择该控件,右键单击,然后修改该容器子项的Tab键顺序。
答案 1 :(得分:12)
如果我确实理解你,CnPack可以帮助设计时间。
下面你可以看到一个功能。当您将组件放入表单时,CnPack可以显示Tab Orders。当您有许多编辑,按钮或面板时,这可以提供帮助
另一个功能是按钮“表单中的自动设置选项卡订单”,它使用每个控件的位置设置选项卡订单以定义它的Tab顺序。按下按钮后,请参见下面相同的表格。
我发现他们在设计大型表格时非常有帮助。 另一个选项是GExperts Tab Order屏幕,它具有相同的“按位置排序”功能:
答案 2 :(得分:1)
我设置Tab键顺序的方法是按顺序选择每个组件,然后将控件剪切到剪贴板( CTRL-X ),然后粘贴( CTRL -V )他们又回来了。