Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar de campo con flechitas (https://www.clubdelphi.com/foros/showthread.php?t=16600)

cesar_picazo 03-12-2004 16:16:19

Cambiar de campo con flechitas
 
Buenos dias a todos.

Estoy utilizando delphi 6 y estoy viendo si es posible hacer lo siguiente:

Tengo un formulario con 40 tedit, en los cuales quiero ver si es posible hacer que cuando se presionen las teclas de flechitas Abajo o Arriba salte al campo inmediato que este bajo dicho tedit.

Ejemplo:


Fomulario


tedit1 tedit4
tedit2 tedit5
tedit3 tedit6

El orden de tabularcion es 1,4,2,5,3,6 y necesito que si presiono flechitas si estoy en el campo 1 me pase al campo 2 y si estoy en el cinco me envie al 6 si presiono flechitas hacia abajo.

Nota: Se que existe la propiedad setfocus de cada objeto, pero el inconveniente es que la aplicacion ya cuenta con 30 formulario y hacerlo uno por uno me resulta mucho tiempo, no se si existe una forma de hacerlo mas facil en donde con una sola funcion lo logre y no tener que decirle campo por campo.

Sin más me despido y gracias por su ayuda.

quetzal 03-12-2004 16:43:31

Enter, Flecha arriba y abajo
if (Key=13)or(Key=40)or(Key=38) Then
nombreFormulario.SelectNext(nombreFormulario.ActiveControl,Key<>38,true);

:D

cesar_picazo 03-12-2004 17:05:00

Si esta bien pero
 
Ya valide lo que me pasaste y si esta bien, pero tengo 6 tedit


tedit1 tedit2

tedit3 tedit4

tedit5 tedit6

Si presiono tab y estoy en el campo 1 me pasa al campo 2 pero si presiono flechitas me pasa al 2 y yo quisiera que fuera el 3, esto es si presiono flechitas me pasa a al campo de arriba o abajo, independiente de su tab order.

Neftali [Germán.Estévez] 03-12-2004 17:43:33

Los métodos que existen, éste y el que existe utilizando mensajes utilizan el TabOrder para posicionarse en el "siguiente" control; Me da la impresión de que si quieres que al pulsar la flecha Derecha se posicione en el más próximo en esa dirección, independientemente del TabOrder, e igual en las siguientes direcciones lo vas a tener que realizar tú "a mano".
Deberás hacer una rutina que te calcule, a partir de un control, el más prosimo en una determinada dirección.

Debes repasar todos los componentes del Form (Form.ComponentCount y Form.Components[i]) y detectar cual el el "siguiente" a partir de la dirección (flecha pulsada). Sólo un detalle, ten en cuenta que estén dentro del mismo contenedor, ya que no te servirá para controles que estén en diferentes pestañas (por ejemplo).

roman 03-12-2004 17:47:39

¿Y por qué no simplemente:


Código:

Flecha derecha: SelectNext(Control, true, false)
Flecha izquierda: SelectNext(Control, falsa, false);
Flecha abajo: SelectNext(Control, true, false), SelectNext(Control, true, false)
Flecha arriba: SelectNext(Control, false, false), SelectNext(Control, false, false)

?

// Saludos

cesar_picazo 03-12-2004 19:33:58

Creo que ya se que voy a hacer
 
De la coleccion de controlcount

voy a hacer un recorrido en los objetos y el inmediato abajo o arriba mas cercano ese va a obtener el foco. propiedades top left

Gracias por su ayuda, voy a ponerlo y lo voy a publicar en el foro, por su ayuda gracias.


La franja horaria es GMT +2. Ahora son las 08:03:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi