Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   DateTimePicket y UpDown (https://www.clubdelphi.com/foros/showthread.php?t=38701)

tarco35 24-12-2006 13:04:36

DateTimePicket y UpDown
 
Saludos a todos... He situado un DateTimePicker (solo con Date) y las flechitas de up y down son muy pequeñas para una pantalla tactil. Podria asociar de alguna manera un TUpDown a esas flechitas para solaparlas en pantalla.
Gracias por su colaboracion...

marcoszorrilla 24-12-2006 13:24:39

Al asociarlo tomará el tamaño de las flechitas con lo cual estarás en lo mismo. Sin embargo si fuera un MonthCalendar, saldrás ganando puesto que toma el tamaño del calendario.

Un Saludo.

tarco35 24-12-2006 18:17:59

Es asociar funciones
 
Estimado Marcos... por asociar me referia a que cuando actue hacia arriba o abajo el TUpDown le pase ese "click" a las flechitas del otro y funcione como si realmente le estubiese cliqueando a las flechitas pequeñas del componenteTDateTime....

roman 24-12-2006 19:55:50

¿Qué las flechitas up-down del DateTimePicker no aparecen cuando se muestra la hora y no la fecha?

En todo caso, siempre puedes usar cualquier control, por ejemplo un SpeedButton y simular que se oprimen las flechas:

Código Delphi [-]
(* Flecha arriba *)
keybd_event(VK_UP, 0, 0, 0);
keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);

(* Flecha abajo *)
keybd_event(VK_DOWN, 0, 0, 0);
keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);

// Saludos

Lepe 25-12-2006 13:45:01

Cita:

Empezado por roman
En todo caso, siempre puedes usar cualquier control, por ejemplo un SpeedButton y simular que se oprimen las flechas:

Aunque lo has dejado claro, podría haber confusión: No se podría utilizar cualquier control, sino que debería usarse un SpeedButton, precisamente porque este control no captura el foco del ratón, por tanto, se puede estar en el TDateTimePicker y al pulsar el SpeedButton, el foco sigue estando en el TdateTimePicker, por tanto esas pulsaciones se envían a dicho control.

Si usamos un simple TButton, al pulsarlo, el foco estaría sobre el TButton, por tanto esa pulsación la procesaría el TButton, no el TdatetimePicker.

Para más aclaración:
Cita:

Empezado por tarco35
las flechitas de up y down son muy pequeñas para una pantalla tactil.

Saludos

tarco35 25-12-2006 19:49:53

Funciona...
 
Lo he probado y funciona correctamente sobre el componente que tenga el foco, sea el que sea, Grid, TDateTimer, Combo... pro.. ¿habria alguna forma de hacerlo para que solo funcionara para un determinado componente?
Gracias por todo.

roman 26-12-2006 07:14:21

Cita:

Empezado por Lepe
No se podría utilizar cualquier control, sino que debería usarse un SpeedButton, precisamente porque este control no captura el foco del ratón, por tanto, se puede estar en el TDateTimePicker y al pulsar el SpeedButton, el foco sigue estando en el TdateTimePicker, por tanto esas pulsaciones se envían a dicho control.

Tienes razón en esto que comentas. La verdad es que originalmente había puesto un DateTimePicker1.SetFocus justo antes del código expuesto y por alguna razón que ahora no ve claro lo quité :) Poniendo el foco en el control deseado antes de simular la tecla resolvería el problema con un Button u otro control y creo que es lo que resolvería lo último que plantea tarco35.

// Saludos

Lepe 26-12-2006 12:43:28

Otra solución a la planteada por roman:

En el Onclick del SpeedButton:
Código Delphi [-]
if (Self.ActiveControl is TdatetimePicker) and
   (TDateTimePicker(Self.ActiveControl) = DatetimePicker1) then
  // aqui lanzamos los eventos de teclado
else
   ShowMessage(' Haga clic primero en el Control de fechas');
Quizás en este caso me parece más acertada la solución de roman. Normalmente esos SpeedButtons se colocan cerca del TDateTimePicker, por tanto el usuario al pulsar dicho botón, espera que automáticamente cambie ese control y no otro.

Para hacer más intuitiva la cosa, puedes poner un GroupBox y dentro el TDatetimePicker y los dos SpeedButton, así quedará más claro al usuario como funciona.

Saludos


La franja horaria es GMT +2. Ahora son las 12:28:52.

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