2012-01-16 5 views
6

Неверный порядок вкладок в моей форме в Delphi (Embarcadero® Delphi® 2010 Version 14.0), что означает, что клавиша табуляции переходит к кажущимся случайным элементам в форме.Delphi tab order

Однако, когда я иду и меняю его в 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 Computing Project

+1

@David Рассмотрите это. Извините - позади. –

ответ

19

TabOrder смежный. Первый элемент управления имеет TabOrder от 0. Следующий имеет TabOrder от 1 и так далее. Вы не можете оставить никаких пробелов.

Хотя программно можно назначить TabOrder, я лично считаю, что проще всего использовать графический интерфейс. Щелкните правой кнопкой мыши на форме или на панели управления контейнером и выберите пункт меню Tab Order. После этого вы увидите диалоговое окно, как это:

enter image description here

Вы можете использовать кнопки со стрелками, чтобы изменить порядок, или вы можете просто перетаскивать элементы для переназначения. Он хорошо работает в моем представлении, но вы должны помнить, что элементы управления, которые содержат другие элементы управления (например, панели, таблицы и т. Д.), Имеют собственный порядок табуляции. Для такого контроля вам нужно выбрать этот элемент управления, щелкнуть правой кнопкой мыши, а затем изменить порядок вкладок для дочерних элементов этого контейнера.

+0

Слишком много BBC Basic.Я предполагаю, что это означает много повторного заказа, если я хочу добавить что-то новое. –

+0

Ах да, BBC Micro. У меня была модель B. 'REN 10, 10', кажется, звонит! –

+0

Если вы не используете свойство Tag для компонентов, тогда вы можете назначить свои значения «TabOrder» вашего ad-hoc для свойства Tag, а затем создать процедуру для программного задания порядка вкладок на основе значений тегов. Затем вы можете легко вставлять новые компоненты с промежуточными тегами и автоматически обрабатывать процедуру заказа табуляции. –

11

Если я хорошо вас понял, CnPack может помочь во время разработки.

Ниже вы можете увидеть одну из этих функций. CnPack может показать вам вкладки «Заказы», ​​когда вы добавляете компоненты в форму. Это может помочь, когда у вас много изменений, кнопок или панелей.
CnPack Display TabOrders in Designing Mode

Еще одной особенностью является кнопка «Auto Set Tab Заказы в форме», то установите на вкладке Заказы, используя позицию каждого управления, чтобы определить это Tab Order. См. Ниже ту же форму после нажатия кнопки. "Auto Set Tab Orders in the Form" button

Я нахожу их чрезвычайно полезными при проектировании больших форм. Другим вариантом было бы GExperts Tab экран Order, которые имеют один и тот же «порядок по позиции» особенность: enter image description here

+0

+1 очень хороший ответ, демонстрирующий два очень полезных и мощных инструментария –

1

Путь я установить порядок обхода путем выбора каждого компонента в нужном порядке порядок вкладок, а затем вырезать элементы управления в буфер обмена (CTRL-X), затем вставьте (CTRL-V) их обратно.

+0

Вы можете сделать это намного проще с помощью Cnpack или GExperts. –

+0

@FabricioAraujo - На самом деле, для нескольких элементов управления довольно быстрый метод. Я буду использовать его! Если у вас есть много, я рекомендую действительно CNPack – Ampere

 Смежные вопросы

  • Нет связанных вопросов^_^