FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error en uso de TDatePicker en una ButtonBar...
Posts: 38
Joined: Mon Nov 28, 2005 02:10 PM
Error en uso de TDatePicker en una ButtonBar...
Posted: Thu Mar 09, 2006 10:28 PM
Hola a todos,
estoy colocando un control TDatePicker en una ButtonBar:

  aGet[3] := Date()
  DEFINE BUTTONBAR oBar OF oDlgCtc03 _3D 
   @ 0.3,53 SAY oSay[2] PROMPT "Fecha de Corte:" OF oBar SIZE 80,14 FONT oWndMain:oFont
   @ 0.3,68 DTPICKER oGet[3] VAR aGet[3] OF oBar SIZE 95,18 UPDATE


Pues todo esto muy bien, se presenta bien el control en la barra, el error se da cuando deseo cambiar la fecha, se abre el calendario, se escoge la fecha con el mouse o con las flechas (en el control se ve que esta cambiando la fecha), y luego se confirma la fecha deseada, el control se vuelve a colocar la fecha con que se inicio.
Si la cambio con puro teclado sin utilizar el calendario, si se cambia la fecha.

Alguien a tenido este problema y sabrá como solucionarlo??

Gracias y saludos.

Carlos Sincuir
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Error en uso de TDatePicker en una ButtonBar...
Posted: Sat Mar 11, 2006 01:06 AM
Carlos,

Tienes que hacer los siguientes cambios para que funcione correctamente:

1. En la Clase TWindow:
METHOD Notify( nIdCtrl, nPtrNMHDR ) CLASS TWindow

   local nCode     := GetNMHDRCode( nPtrNMHDR )
   local nHWndFrom := GetNMHDRHWndFrom( nPtrNMHDR )
   local oCtrl     := oWndFromHwnd( nHWndFrom )

   if oCtrl != nil
      do case
         case nCode == 103 .or. nCode == TVN_SELCHANGEDA  // TreeView item selected
              oCtrl:SelChanged()

         otherwise
              if oCtrl:hWnd != ::hWnd
                 return oCtrl:Notify( nIdCtrl, nPtrNMHDR )
              endif   
      endcase
   endif

return nil

2. En la Clase TControl:
   // METHOD Notify( nIdCtrl, nPtrNMHDR ) VIRTUAL  // common controls notifications

3. En la Clase TDatePick (source\classes\tdtpicke.prg)
METHOD Notify( nIdCtrl, nPtrNMHDR ) CLASS TDatePick

   local nCode := GetNMHDRCode( nPtrNMHDR )
   
   if nCode == -759  // Date-time picker changed
      Eval( ::bSetGet, ::GetDate() )
      ::Change()
   endif
   
return nil

Aqui con esos cambios, tu ejemplo funciona bien :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Error en uso de TDatePicker en una ButtonBar...
Posted: Sat Mar 11, 2006 01:09 AM
Este es el código del ejemplo que hemos probado:
#include "Fivewin.ch"
#include "dtpicker.ch"

FUNCTION MAIN()

    LOCAL oDlg, aGet := Array( 3 ), oGet := Array( 3 ), oSay := Array( 3 )

    DEFINE WINDOW oDlg TITLE "Test"

aGet[3] := Date() 

    DEFINE BUTTONBAR oBar OF oDlg _3D 

    @ 0.3,53 SAY oSay[2] PROMPT "Fecha de Corte:" OF oBar SIZE 80,14

    @ 0.3,68 DTPICKER oGet[3] VAR aGet[3] OF oBar SIZE 95,18 UPDATE

    ACTIVATE WINDOW oDlg

    RETURN NIL
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion