Favor ayuda, necesito agregar Boton adicional para Dtpicker

Favor ayuda, necesito agregar Boton adicional para Dtpicker

Postby remtec » Sat Mar 06, 2021 3:07 pm

Hola Amigos.

Tengo el ingreso de 2 fechas por GET, pero además necesito agregar un boton con icono calendario a un costado del get, para dar la posibilidad que el usuario no digite la fecha y la obtenga seleccionando desde el calendario y que asigne la fecha a la variable del GET.

Desde ya muchas gracias.

Antonio

Codigo:
Code: Select all  Expand view  RUN


Static Function Pide_Fecha()
        Local oDlg4,oSay1,oFecha1,oFon1,oFon2,oFon3,otitu1,oFecha2
        Local dFecha2:=Ctod("  /  /    "),dFecha1:=Ctod("  /  /    ")

        Public Mensa:=""


        DEFINE FONT oFon1 NAME "TAHOMA" SIZE 0,-14  BOLD
        DEFINE FONT oFon2 NAME 'TAHOMA' SIZE 0,-12   BOLD
        DEFINE FONT oFon3 NAME 'TAHOMA' SIZE 0,24   BOLD

        //                       Ancho,Alto
    DEFINE DIALOG oDlg4 SIZE 460,250 PIXEL TRUEPIXEL FONT oFon1   STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )
        @ 10,70 SAY otitu1 PROMPT " PERIODO DE INFORME "  PIXEL OF oDlg4 COLORS RGB(0,100,0)   FONT oFon3

        @ 060,020 SAY "Ingrese Fecha Inicial"       SIZE 160,20 PIXEL OF oDlg4  RIGHT  FONT oFon1

        @ 060,200 GET oFecha1    Var dFecha1  SIZE 110,25     PIXEL OF oDlg4   PICTURE "@d" COLOR RGB(0,0,128)   FONT oFon1 UPDATE


        @ 125,020 SAY "Ingrese Fecha Final"         SIZE 160,20 PIXEL OF oDlg4  RIGHT  FONT oFon1

        @ 120,200 GET oFecha2    Var dFecha2  SIZE 110,25     PIXEL OF oDlg4   PICTURE "@d" COLOR RGB(0,0,128)   FONT oFon1 UPDATE


    @ 180,150 BTNBMP SIZE 70, 50 PROMPT "IMPRIME"  OF oDlg4 PIXEL 2007 Resource "#8002"  FONT oFon2 ;
            ToolTip  "BUSCA DATOS";
                ACTION IF(!ValidaFechas(dFecha1,dFecha2),(MsgInfo( Mensa ),.F.),(oFecha1:Refresh(),oFecha2:Refresh(), .T.) )
           

    @ 180,300 BTNBMP SIZE 70, 50 PROMPT "VOLVER"  OF oDlg4 PIXEL 2007 Resource "#8028"  FONT oFon2 ;
            ToolTip  "VOLVER";
          ACTION oDlg4:End()

        ACTIVATE DIALOG oDlg4 CENTERED

        RELEASE FONT oFon1,oFon2,oFon3

        Return

Static Function ValidaFechas(Fech1,Fech2)
                    If Empty(Fech2).or.Empty(Fech1)
                            Mensa:="Debe Ingresar una Fecha Valida"
                         Return .f.
                    Endif
                    If fech1>Fech2
                            Mensa:="Fecha Inicial Debe ser Menor que Fecha Final"
                         Return .f.
                    Endif
                    Busca_Info(Fech1,Fech2)  // Mando a buscar informacion

                    Return .t.


 
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Favor ayuda, necesito agregar Boton adicional para Dtpicker

Postby VitalJavier » Sat Mar 06, 2021 4:20 pm

Por que no utilizas DtPicker

#INCLUDE "DtPicker.CH"
User avatar
VitalJavier
 
Posts: 241
Joined: Mon Jun 10, 2013 6:40 pm

Re: Favor ayuda, necesito agregar Boton adicional para Dtpicker

Postby remtec » Sat Mar 06, 2021 4:38 pm

VitalJavier wrote:Por que no utilizas DtPicker

#INCLUDE "DtPicker.CH"


Hola como estas.

Se lo presente como tu me indicas, pero al clientes le gusta mas un GET y un boton, ya que le molestaba digitar en DtPicker el dia, luego moverse con la fecha o mouse al mes y luego al año. Cosas de usuarios. A menos que el se pueda modificar el get de DtPicker y se pueda digitar la fecha completa como en los Get.

Saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Favor ayuda, necesito agregar Boton adicional para Dtpicker

Postby FranciscoA » Sat Mar 06, 2021 7:24 pm

remtec wrote:Hola Amigos.

Tengo el ingreso de 2 fechas por GET, pero además necesito agregar un boton con icono calendario a un costado del get, para dar la posibilidad que el usuario no digite la fecha y la obtenga seleccionando desde el calendario y que asigne la fecha a la variable del GET.

Desde ya muchas gracias.

Antonio

Codigo:
Code: Select all  Expand view  RUN


Static Function Pide_Fecha()
        Local oDlg4,oSay1,oFecha1,oFon1,oFon2,oFon3,otitu1,oFecha2
        Local dFecha2:=Ctod("  /  /    "),dFecha1:=Ctod("  /  /    ")

        Public Mensa:=""


        DEFINE FONT oFon1 NAME "TAHOMA" SIZE 0,-14  BOLD
        DEFINE FONT oFon2 NAME 'TAHOMA' SIZE 0,-12   BOLD
        DEFINE FONT oFon3 NAME 'TAHOMA' SIZE 0,24   BOLD

        //                       Ancho,Alto
    DEFINE DIALOG oDlg4 SIZE 460,250 PIXEL TRUEPIXEL FONT oFon1   STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )
        @ 10,70 SAY otitu1 PROMPT " PERIODO DE INFORME "  PIXEL OF oDlg4 COLORS RGB(0,100,0)   FONT oFon3

        @ 060,020 SAY "Ingrese Fecha Inicial"       SIZE 160,20 PIXEL OF oDlg4  RIGHT  FONT oFon1

        @ 060,200 GET oFecha1    Var dFecha1  SIZE 110,25     PIXEL OF oDlg4   PICTURE "@d" COLOR RGB(0,0,128)   FONT oFon1 UPDATE


        @ 125,020 SAY "Ingrese Fecha Final"         SIZE 160,20 PIXEL OF oDlg4  RIGHT  FONT oFon1

        @ 120,200 GET oFecha2    Var dFecha2  SIZE 110,25     PIXEL OF oDlg4   PICTURE "@d" COLOR RGB(0,0,128)   FONT oFon1 UPDATE


    @ 180,150 BTNBMP SIZE 70, 50 PROMPT "IMPRIME"  OF oDlg4 PIXEL 2007 Resource "#8002"  FONT oFon2 ;
            ToolTip  "BUSCA DATOS";
                ACTION IF(!ValidaFechas(dFecha1,dFecha2),(MsgInfo( Mensa ),.F.),(oFecha1:Refresh(),oFecha2:Refresh(), .T.) )
           

    @ 180,300 BTNBMP SIZE 70, 50 PROMPT "VOLVER"  OF oDlg4 PIXEL 2007 Resource "#8028"  FONT oFon2 ;
            ToolTip  "VOLVER";
          ACTION oDlg4:End()

        ACTIVATE DIALOG oDlg4 CENTERED

        RELEASE FONT oFon1,oFon2,oFon3

        Return

Static Function ValidaFechas(Fech1,Fech2)
                    If Empty(Fech2).or.Empty(Fech1)
                            Mensa:="Debe Ingresar una Fecha Valida"
                         Return .f.
                    Endif
                    If fech1>Fech2
                            Mensa:="Fecha Inicial Debe ser Menor que Fecha Final"
                         Return .f.
                    Endif
                    Busca_Info(Fech1,Fech2)  // Mando a buscar informacion

                    Return .t.


 



Hola, Antonio.
Desde hace mucho lo he hecho de la manera siguiente con resultados satisfactorios. ( Probado hasta la version 1204 )
Intenta asi:

Code: Select all  Expand view  RUN
      @ 060,020 SAY "Ingrese Fecha Inicial"       SIZE 160,20 PIXEL OF oDlg4  RIGHT  FONT oFon1
        @ 060,200 GET oFecha1    Var dFecha1  SIZE 110,25     PIXEL OF oDlg4   PICTURE "@d" COLOR RGB(0,0,128)   FONT oFon1 UPDATE ;
                 ACTION Calend(@dFecha1,Self,2) BITMAP "FIND16x16"

        @ 125,020 SAY "Ingrese Fecha Final"         SIZE 160,20 PIXEL OF oDlg4  RIGHT  FONT oFon1
        @ 120,200 GET oFecha2    Var dFecha2  SIZE 110,25     PIXEL OF oDlg4   PICTURE "@d" COLOR RGB(0,0,128)   FONT oFon1 UPDATE ;
                 ACTION Calend(@dFecha2,Self,2) BITMAP "FIND16x16"


//-------------------------//Llama a Classe TCalend (incluir calendar.ch)
FUNCTION Calend( dFecha, oGet, nSide )
LOCAL oDlg, oCal, aRect, nPos
LOCAL lOk := .f.

DEFAULT  nSide := 1  // posic derecha

aRect := GetWndRect( oGet:hWnd )

DEFINE DIALOG oDlg FROM 0,0 TO 145,224 PIXEL TITLE "FAPSOFTWARE" // STYLE nor( WS_POPUP,WS_VISIBLE,WS_BORDER)
@-10,-20 CALENDAR oCal VAR dFecha OF oDlg PIXEL DAYSTATE SIZE 150,89 DBLCLICK (lOk:=.t.,oDlg:End())  
oCal:bKeyDown := {|nkey| IF( nKey = 13 .OR. nKey = 32, (lOk:=.t.,oDlg:End()), ) }
oDlg:oClient := oCal

if nSide == 1
   nPos :=aRect[2]
else
   nPos :=aRect[2]-(oDlg:nWidth-oGet:nWidth)
endif

ACTIVATE DIALOG oDlg ;
     ON INIT (oCal:show(),oDlg:Move(aRect[1] + oGet:nHeight + 4, nPos)) ;
     VALID IF( lOk .AND. ! GetKeyState( VK_ESCAPE ), (oGet:cText := dFecha, oGet:refresh(), .T. ), .t. )

RETURN NIL

 
 
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Favor ayuda, necesito agregar Boton adicional para Dtpicker

Postby VitalJavier » Sat Mar 06, 2021 8:04 pm

Lo hice asi en un dialogo

#INCLUDE "Calendar.CH"

En el dialogo el "Calendar" esta oculto

Code: Select all  Expand view  RUN

        REDEFINE GET        oGet VAR dVar ID 4001 OF oDlg1 PICTURE "@d"
        REDEFINE BUTTON oBtn ID 4002 ACTION oCal:Show()
        REDEFINE CALENDAR oCal VAR oDTal ID 4003 OF oDlg1 DBLCLICK (oCal:Hide(),dVar := oDTal, oGet:Refresh())

 
User avatar
VitalJavier
 
Posts: 241
Joined: Mon Jun 10, 2013 6:40 pm

Re: Favor ayuda, necesito agregar Boton adicional para Dtpicker

Postby remtec » Sat Mar 06, 2021 8:25 pm

Hola Francisco y VitalJavier.

Muchas gracias a ambos.

He aplicado la solución que me dio Francisco, funciona muy bien.

Muy Agradecido y muchos saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Favor ayuda, necesito agregar Boton adicional para Dtpicker

Postby FranciscoA » Sun Mar 07, 2021 12:37 am

Me alegra que te haya funcionado.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Favor ayuda, necesito agregar Boton adicional para Dtpicker

Postby acuellar » Sun Mar 07, 2021 12:12 pm

Hola Antonio
Se lo presente como tu me indicas, pero al clientes le gusta mas un GET y un boton, ya que le molestaba digitar en DtPicker el dia, luego moverse con la fecha o mouse al mes y luego al año. Cosas de usuarios. A menos que el se pueda modificar el get de DtPicker y se pueda digitar la fecha completa como en los Get.

con éste código se evita pulsar la flecha o el mouse con DtPicker
Code: Select all  Expand view  RUN

          REDEFINE DTPICKER oFEC VAR oSQL:FECHAING ID 104 OF oDlg3
      oFEC:bChange = { || If( oFEC:lClosed .and. oFEC:lFocused, oFEC:PostMsg( WM_KEYDOWN, VK_RIGHT ),) }
 


Es otra opción.
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1644
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Willi Quintana and 50 guests