In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Duda con TDateEdit

Foro de Xailer profesional en español
Responder
buzonjmartial
Mensajes: 99
Registrado: Vie Abr 10, 2009 11:02 pm

Duda con TDateEdit

Mensaje por buzonjmartial »

Buenos días,

necesitaría anular en esta clase la función de subir o bajar de día en la fecha, con las teclas flecha arriba y abajo.

El problema son quejas de usuarios, que sin darse cuenta cambian la fecha de documentos importantes por haber tocado las flechas sin darse cuenta.

Una ayudita por favor.
Un Saludo,
Joaquín Martínez
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9104
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Duda con TDateEdit

Mensaje por ignacio »

Hola,

Me temo que va a tener que sobrecargar la clase TDateEdit con este código:

Código: Seleccionar todo

METHOD WMKeyDown( nKey, nFlags, hWnd ) CLASS TDateEdit

   ::oForm:SendMsg( WM_CHANGEUISTATE, MakeLong( UIS_CLEAR, UISF_HIDEFOCUS ) )
   ::Refresh()  // NOTA: Bug*
   IF nKey == VK_F4 .AND. ! lGetKeyState( VK_CONTROL )
      TDropCalendar():New( Self )
      RETURN 0
   ENDIF

RETURN ::Super:WMKeyDown( nKey, nFlags, hWnd )
Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
buzonjmartial
Mensajes: 99
Registrado: Vie Abr 10, 2009 11:02 pm

Re: Duda con TDateEdit

Mensaje por buzonjmartial »

Ignacio,

muchas gracias por iluminarme. Aunque he tenido que hacer cambios para que funcione, por si a alguien le sirve.

Código: Seleccionar todo

CLASS TDateEdit FROM XDateEdit

 PUBLISHED:

    METHOD WMKeyDown( nKey, nFlags, hWnd )

ENDCLASS

METHOD WMKeyDown( nKey, nFlags, hWnd ) CLASS TDateEdit

   ::oForm:SendMsg( WM_CHANGEUISTATE, MakeLong( UIS_CLEAR, UISF_HIDEFOCUS ) )
   ::Refresh()  // NOTA: Bug*

   IF nKey == VK_UP .OR. nKey == VK_DOWN // No hace nada
      RETURN 0
   ELSE
      IF nKey == VK_F4 .AND. ! lGetKeyState( VK_CONTROL )
         TDropCalendar():New( Self )
         RETURN 0
      ENDIF
   ENDIF

RETURN ::Super:WMKeyDown( nKey, nFlags, hWnd )
Además he tenido que añadir a continuación, la clase TDropCalendar completa y las funciones en C que necesita, porque todo estaba como STATIC y daba error al compilar.

Muchas Gracias.
Un Saludo,
Joaquín Martínez
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9104
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Duda con TDateEdit

Mensaje por ignacio »

Hola,

Creo que no es una buena idea hacer un RETURN 0 cuando realmente no se hace nada con la pulsación de VK_UP y VK_DOWN, lo suyo es que se se llame a ::Super:WmKeyDown().

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
buzonjmartial
Mensajes: 99
Registrado: Vie Abr 10, 2009 11:02 pm

Re: Duda con TDateEdit

Mensaje por buzonjmartial »

Hola,

Sí, así lo puse, pero seguía cambiando el día incrementándolo y decrementándolo.

Será por alguna herencia, pero no sabía por cual y al ponerlo así lo ignora.

Puedes probar el código que me pusiste y verás que no cambia nada.
Un Saludo,
Joaquín Martínez
Responder