martes, 25 de noviembre de 2008

Pestaña saltarina!!

Resulta que cuando ejecuto el proyecto y voy a una interfaz que contiene un objeto TPageControl con varias pestañas (Ficha, Rejilla, Consultas), unas veces me presenta por primera vez la pestaña Ficha, en otras ocasiones me presenta la pestaña Rejilla y en otras 'caprichosamente' me presenta la pestaña Consultas.

Lo dicho!!...La pestaña Saltarina!!.

Bueno, la razón de esto es la siguiente:

Delphi, en ejecución, presenta la pestaña de un objeto hijo de TPageControl dependiendo de la última pestaña (TTabSheet) que se actualizó en tiempo de diseño. Por ello parece que salta!!. Es decir, si en tiempo de diseño me voy a Consultas para diseñar o arreglar algo, será ésta la pestaña que aparezca en tiempo de ejecución. Si un rato después, me voy a Ficha y arreglo algo, en ejecución me presentará Ficha, etc...

¿Qué hago para arreglar esto?:

Para arreglar esto colóquese la siguiente instrucción en el evento OnActivate de cada forma donde aparezca esta cuestión:

PageControl.ActivePageIndex := 0;

Como es natural, el objeto PageControl en cada caso se llamará de una y otra forma.

Explicación:

Con la instrucción anterior le estamos indicando al proyecto que cuando se active la interfaz, presente la pestaña cuyo orden es el cero, es decir, la primera que aparece por la izquierda, es decir, la pestaña Ficha. Esto es así porque la referencia a cada una de las pestañas puede hacerse como en un array con un índice (número entero desde 0, hasta el número total de pestañas que es exactamente la propiedad PageCount del objeto TPageControl.).

Otra forma de hacer esto cuando no conocemos el orden que ocupa la pestaña, entre todas ellas, pero sí conocemos el nombre (propiedad name) de la pestaña, sería:

PageControl.ActivePage := Propiedad Name de la pestaña que quiero activar;

De esta manera se le acaba el baile a la pestaña!!.

No hay comentarios: