2012-01-16 22 views
6

El orden de tabulación en mi formulario en Delphi (Embarcadero® Delphi® 2010 Versión 14.0) es incorrecto, lo que significa que la tecla de tabulación salta a elementos aparentemente aleatorios en el formulario.Orden de tabulación Delphi

Sin embargo, cuando voy y lo cambio en Delphi, ¡los reorganiza para mí, en el mismo orden incorrecto!

lo tanto, decidí asignar mediante programación ellas:

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; 

(Traté asignándole tanto atrás y hacia delante, sino que hace lo mismo.)

Pero esto sigue sin funcionar. El cuadro de mensaje aparece con 7 en lugar de 100, cada vez. Algo está cambiando constantemente el orden, pero no es mi código.

¿Por qué es esto, y es posible arreglarlo?

Esto es para mi proyecto A2 Informática

+1

@David Considéralo hecho. Lo siento, me atrasé. –

Respuesta

19

TabOrder es contigua. El primer control tiene TabOrder de 0. El siguiente tiene TabOrder de 1 y así sucesivamente. No puedes dejar ningún espacio.

Si bien puede asignar TabOrder programáticamente, personalmente me resulta más fácil usar la GUI para hacerlo. Haga clic con el botón derecho en el formulario, o incluso en un control de contenedor, y seleccione Orden de tabulación elemento del menú. A continuación, verá un diálogo como este:

enter image description here

Puede utilizar los botones de flecha para volver a pedir, o simplemente puede arrastrar elementos que volver a pedir. En mi opinión, funciona razonablemente bien, pero debe recordar que los controles que contienen otros controles (por ejemplo, paneles, hojas de pestañas, etc.) tienen su propio orden de tabulación. Para dicho control, debe seleccionar ese control, hacer clic con el botón derecho y luego modificar el orden de tabulación para los elementos secundarios de ese contenedor.

+0

Demasiada BBC Básica.Supongo que significa un gran reordenamiento si quiero agregar algo nuevo. –

+0

Ah sí, la BBC Micro. Tenía un modelo B. ¡REN 10, 10 parece sonar la campana! –

+0

Si no está utilizando la propiedad Tag de los componentes, puede asignar sus valores 'TabOrder' ad-hoc a la propiedad Tag y luego crear un procedimiento para establecer programáticamente el orden de tabulación en función de los valores de las etiquetas. A continuación, puede insertar fácilmente nuevos componentes con etiquetas intermedias y hacer que el procedimiento de orden de tabulación lo resuelva automáticamente. –

11

Si te entendí bien, CnPack puede ayudar en el tiempo del diseño.

A continuación, puede ver una característica. CnPack puede mostrarle las Órdenes de Pestañas mientras pone los componentes en forma. Esto puede ser útil cuando tiene muchas ediciones, botones o paneles.
CnPack Display TabOrders in Designing Mode

Otra característica es el botón "Auto Órdenes conjunto de pestañas en la forma", que establece las órdenes de tabulación con la posición de cada uno de los controles para definir su orden de tabulación. Vea a continuación el mismo formulario después de presionar el botón. "Auto Set Tab Orders in the Form" button

Los encuentro extremadamente útiles al diseñar formularios grandes. Otra opción sería GExperts pantalla de orden de tabulación que tienen la misma función "orden de posición": enter image description here

+0

+1 muy buena respuesta mostrando dos herramientas muy útiles y potentes –

1

La forma en que puse orden de tabulación es mediante la selección de cada componente en el orden que desee el orden de tabulación, a continuación, cortar los controles al portapapeles (CTRL-X), luego pegue (CTRL-V) de nuevo.

+0

Puedes hacerlo mucho más fácil usando Cnpack o GExperts .. –

+0

@FabricioAraujo - En realidad, para algunos controles es un método bastante rápido. Lo usaré! Si tiene muchos, recomiendo de hecho CNPack – Ampere

Cuestiones relacionadas