FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Problem with datepick control Resolved !!!
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Problem with datepick control Resolved !!!
Posted: Sun May 02, 2021 09:33 AM
I have two datepick as the Nages sample dtprang1.prg I add a small Menu pulldown where I set some dates

oBtnSelCalendar:= { |oBtn| BtnPopCalMenu(@dFirst, @dLast,oDtpFirst,oDtpLast,dMin,dMax) }
obviously I added Update to the datepick controls





the problem is that the dates are not always updated at the first selection from menu, sometimes it happens that they update at the second selection

the test
Code (fw): Select all Collapse
#include "fivewin.ch"
#include "dtpicker.ch"

function Main()

   local oDlg, oFont, oDtpFirst, oDtpLast
   local dMin     := {^ 2021/05/17 }
   local dMax     := {^ 2021/09/20 }
   local dFirst   := {^ 2021/04/08 }
   local dLast    := {^ 2021/04/08 }

   SET DATE ITALIAN
   SET CENTURY ON

   DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-16
   DEFINE DIALOG oDlg SIZE 500,240 PIXEL TRUEPIXEL FONT oFont ;
      TITLE FWVERSION + " : RANGE OF DATES WITH TWO DATEPICKERS"

   @  30, 30 DTPICKER oDtpFirst VAR dFirst SIZE 200,28 PIXEL OF oDlg ;
      PICTURE "ddd dd mmm yyyy" ;
      ON CHANGE ( oDtpLast:SetRange( dFirst ), oDlg:Update() )  UPDATE

   WITH OBJECT oDtpFirst
      :lNoToday         := .t.
      :lNoTodayCircle   := .t.
      :SetRange( dMin, dMax )
   END

   @  65, 30 BTNBMP PROMPT "-" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dFirst--, oDtpFirst:SetFocus() )

   @  65,200 BTNBMP PROMPT "+" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dFirst++, oDtpFirst:SetFocus() )

   @  30,250 DTPICKER oDtpLast VAR dLast SIZE 200,28 PIXEL OF oDlg ;
      PICTURE "ddd dd mmm yyyy" ON CHANGE oDlg:Update() UPDATE

   WITH OBJECT oDtpLast
      :lNoToday         := .t.
      :lNoTodayCircle   := .t.
      :SetRange( dFirst, dMax )
   END

   @  65,250 BTNBMP PROMPT "-" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dLast--, oDtpLast:SetFocus() )
   @  65,420 BTNBMP PROMPT "+" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dLast++, oDtpLast:SetFocus() )



   @ 120, 30 SAY { || FW_TRANSFORM( dFirst, "ddd dd mmm yyyy" ) } SIZE 200,24 PIXEL OF oDlg UPDATE
   @ 120,250 SAY { || FW_TRANSFORM( dLast,  "ddd dd mmm yyyy" ) } SIZE 200,24 PIXEL OF oDlg UPDATE

   @ 180,70  BTNBMP oBtnSelCalendar FILENAME "calendar.png" FLAT SIZE 40,24 PIXEL OF oDlg NOBORDER
      oBtnSelCalendar:oPopUp:= { |oBtn| BtnPopCalMenu(@dFirst, @dLast,oDtpFirst,oDtpLast,dMin,dMax) }
    


   @ 180,370 BUTTON "OK" SIZE 100,30 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

   ? dFirst, dLast

return nil
//----------------------------------------------------------------------------------------------------------------//
Function BtnPopCalMenu(dFirst, dLast,oDtpFirst,oDtpLast,dMin,dMax)
  Local oPopupDate
     MENU oPopupDate POPUP 2015
       MENUITEM "today"  ACTION  (dFirst:=date(),dLast:=date(),oDtpFirst:refresh(),oDtpLast:refresh())
       MENUITEM "Tomorrow"  ACTION (dFirst:=date()+1,dLast:=date()+1,oDtpFirst:refresh(),oDtpLast:refresh())
       MENUITEM "After tomorrow"  ACTION (dFirst:=date()+2,dLast:=date()+2,oDtpFirst:refresh(),oDtpLast:refresh())
       MENUITEM "Week"  ACTION (dFirst:=date(),dLast:=date()+6,oDtpFirst:refresh(),oDtpLast:refresh())
       SEPARATOR
       MENUITEM "Current Mounth" ACTION (dFirst:=bom(date()),dLast:=EoM(date()),oDtpFirst:refresh(),oDtpLast:refresh())
       MENUITEM "Next Mounth" ACTION (dFirst:=AddMonth(bom(date()),1),dLast:=EoM(dFirst),oDtpFirst:refresh(),oDtpLast:refresh())
       MENUITEM "Season"  ACTION  (dFirst:=dMin,dLast:=dMax,oDtpFirst:refresh(),oDtpLast:refresh())
       SEPARATOR
       MENUITEM "May"  ACTION  (dFirst:=AddMonth(Boy(date()),4),dLast:=EoM(dFirst),oDtpFirst:refresh(),oDtpLast:refresh())
       MENUITEM "June"  ACTION  (dFirst:=AddMonth(Boy(date()),5),dLast:=EoM(dFirst),oDtpFirst:refresh(),oDtpLast:refresh())
       MENUITEM "July"  ACTION  (dFirst:=AddMonth(Boy(date()),6),dLast:=EoM(dFirst),oDtpFirst:refresh(),oDtpLast:refresh())
       MENUITEM "August"  ACTION  (dFirst:=AddMonth(Boy(date()),7),dLast:=EoM(dFirst),oDtpFirst:refresh(),oDtpLast:refresh())
       MENUITEM "September" ACTION  (dFirst:=AddMonth(Boy(date()),8),dLast:=EoM(dFirst),oDtpFirst:refresh(),oDtpLast:refresh())
      ENDMENU
   return oPopupDate







for a sample :

I set the dmin and dmax on

local dMin := {^ 2021/05/17 }
local dMax := {^ 2021/09/20 }

and it's logic the selections

"today"
"tomorrow"
"after tomorrow"
"week"
"current mounth"

not run because I 'm writing on today 2 May 2021 but if you change the date of your computer on 17 May it can change

the selection "next mouth" sometimes not run here , for a sample if you select before "Season" and then "next mounth " you'll see the dates are not updates

then Maj,june,july,september selections not update the datepick control the dates are update with the first day of the mouth seletected

on second time are updated if you select before another menuitem
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: Problem with datepick control
Posted: Sun May 09, 2021 01:28 PM

any solution please ?

Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 4840
Joined: Fri Nov 18, 2005 04:52 PM
Re: Problem with datepick control
Posted: Mon May 10, 2021 01:59 AM

One problem I see is that you are changing the date value with a button and NOT doing an UPDATE. Try just calling oDlg:update() from the button.

If that doesn't work try calling oDpFirst:update() or oDpLast:update() as appropriate. Or try oDlg:update().

FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10
Posts: 654
Joined: Fri Oct 21, 2005 05:54 AM
Re: Problem with datepick control
Posted: Mon May 10, 2021 04:08 AM
Silvio,

Please test this.

Code (fw): Select all Collapse
#include "fivewin.ch"
#include "dtpicker.ch"

function Main()

   local oDlg, oFont, oDtpFirst, oDtpLast, oBtnSelCalendar
   local dMin     := {^ 2021/05/17 }
   local dMax     := {^ 2021/09/20 }
   local dFirst   := {^ 2021/04/08 }
   local dLast    := {^ 2021/04/08 }

   SET DATE ITALIAN
   SET CENTURY ON

   DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-16
   DEFINE DIALOG oDlg SIZE 500,240 PIXEL TRUEPIXEL FONT oFont ;
      TITLE FWVERSION + " : RANGE OF DATES WITH TWO DATEPICKERS"

   @  30, 30 DTPICKER oDtpFirst VAR dFirst SIZE 200,28 PIXEL OF oDlg ;
      PICTURE "ddd dd mmm yyyy" ;
      ON CHANGE ( oDtpLast:SetRange( dFirst ), oDlg:Update() )  UPDATE

   WITH OBJECT oDtpFirst
      :lNoToday         := .t.
      :lNoTodayCircle   := .t.
      :SetRange( dMin, dMax )
   END

   @  65, 30 BTNBMP PROMPT "-" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dFirst--, oDtpFirst:SetFocus() )

   @  65,200 BTNBMP PROMPT "+" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dFirst++, oDtpFirst:SetFocus() )

   @  30,250 DTPICKER oDtpLast VAR dLast SIZE 200,28 PIXEL OF oDlg ;
      PICTURE "ddd dd mmm yyyy" ON CHANGE oDlg:Update() UPDATE

   WITH OBJECT oDtpLast
      :lNoToday         := .t.
      :lNoTodayCircle   := .t.
      :SetRange( dFirst, dMax )
   END

   @  65,250 BTNBMP PROMPT "-" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dLast--, oDtpLast:SetFocus() )
   @  65,420 BTNBMP PROMPT "+" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dLast++, oDtpLast:SetFocus() )



   @ 120, 30 SAY { || FW_TRANSFORM( dFirst, "ddd dd mmm yyyy" ) } SIZE 200,24 PIXEL OF oDlg UPDATE
   @ 120,250 SAY { || FW_TRANSFORM( dLast,  "ddd dd mmm yyyy" ) } SIZE 200,24 PIXEL OF oDlg UPDATE

   @ 180,70  BTNBMP oBtnSelCalendar FILENAME "calendar.png" FLAT SIZE 40,24 PIXEL OF oDlg NOBORDER
      oBtnSelCalendar:oPopUp:= { |oBtn| BtnPopCalMenu(@dFirst, @dLast,oDtpFirst,oDtpLast,dMin,dMax) }
   


   @ 180,370 BUTTON "OK" SIZE 100,30 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

   ? dFirst, dLast

return nil
//----------------------------------------------------------------------------------------------------------------//

Function BtnPopCalMenu(dFirst, dLast, oDtpFirst, oDtpLast, dMin, dMax)

  Local oPopupDate

     MENU oPopupDate POPUP 2015
       MENUITEM "today"  ACTION  (dFirst := date(), dLast := date(), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "Tomorrow"  ACTION (dFirst:=date()+1,dLast:=date()+1, oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "After tomorrow"  ACTION (dFirst:=date()+2,dLast:=date()+2, oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "Week"  ACTION (dFirst:=date(),dLast:=date()+6, oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       SEPARATOR
       MENUITEM "Current Mounth" ACTION (dFirst:=bom(date()),dLast:=EoM(date()), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "Next Mounth" ACTION (dFirst:=AddMonth(bom(date()),1),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "Season"  ACTION  (dFirst:=dMin,dLast:=dMax, oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       SEPARATOR
       MENUITEM "May"  ACTION  (dFirst:=AddMonth(Boy(date()),4),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "June"  ACTION  (dFirst:=AddMonth(Boy(date()),5),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "July"  ACTION  (dFirst:=AddMonth(Boy(date()),6),dLast:=EoM(dFirst), oDtpFirst:refresh(),oDtpLast:refresh(), oDlg:Update())
       MENUITEM "August"  ACTION  (dFirst:=AddMonth(Boy(date()),7),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "September" ACTION  (dFirst:=AddMonth(Boy(date()),8),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
      ENDMENU

   return oPopupDate


-Ramesh Babu
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: Problem with datepick control
Posted: Mon May 10, 2021 07:28 AM
RAMESHBABU wrote:Silvio,

Please test this.

Code (fw): Select all Collapse
#include "fivewin.ch"
#include "dtpicker.ch"

function Main()

   local oDlg, oFont, oDtpFirst, oDtpLast, oBtnSelCalendar
   local dMin     := {^ 2021/05/17 }
   local dMax     := {^ 2021/09/20 }
   local dFirst   := {^ 2021/04/08 }
   local dLast    := {^ 2021/04/08 }

   SET DATE ITALIAN
   SET CENTURY ON

   DEFINE FONT oFont NAME "Segoe UI" SIZE 0,-16
   DEFINE DIALOG oDlg SIZE 500,240 PIXEL TRUEPIXEL FONT oFont ;
      TITLE FWVERSION + " : RANGE OF DATES WITH TWO DATEPICKERS"

   @  30, 30 DTPICKER oDtpFirst VAR dFirst SIZE 200,28 PIXEL OF oDlg ;
      PICTURE "ddd dd mmm yyyy" ;
      ON CHANGE ( oDtpLast:SetRange( dFirst ), oDlg:Update() )  UPDATE

   WITH OBJECT oDtpFirst
      :lNoToday         := .t.
      :lNoTodayCircle   := .t.
      :SetRange( dMin, dMax )
   END

   @  65, 30 BTNBMP PROMPT "-" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dFirst--, oDtpFirst:SetFocus() )

   @  65,200 BTNBMP PROMPT "+" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dFirst++, oDtpFirst:SetFocus() )

   @  30,250 DTPICKER oDtpLast VAR dLast SIZE 200,28 PIXEL OF oDlg ;
      PICTURE "ddd dd mmm yyyy" ON CHANGE oDlg:Update() UPDATE

   WITH OBJECT oDtpLast
      :lNoToday         := .t.
      :lNoTodayCircle   := .t.
      :SetRange( dFirst, dMax )
   END

   @  65,250 BTNBMP PROMPT "-" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dLast--, oDtpLast:SetFocus() )
   @  65,420 BTNBMP PROMPT "+" SIZE 30,30 PIXEL OF oDlg FLAT ;
      ACTION ( dLast++, oDtpLast:SetFocus() )



   @ 120, 30 SAY { || FW_TRANSFORM( dFirst, "ddd dd mmm yyyy" ) } SIZE 200,24 PIXEL OF oDlg UPDATE
   @ 120,250 SAY { || FW_TRANSFORM( dLast,  "ddd dd mmm yyyy" ) } SIZE 200,24 PIXEL OF oDlg UPDATE

   @ 180,70  BTNBMP oBtnSelCalendar FILENAME "calendar.png" FLAT SIZE 40,24 PIXEL OF oDlg NOBORDER
      oBtnSelCalendar:oPopUp:= { |oBtn| BtnPopCalMenu(@dFirst, @dLast,oDtpFirst,oDtpLast,dMin,dMax) }
   


   @ 180,370 BUTTON "OK" SIZE 100,30 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

   ? dFirst, dLast

return nil
//----------------------------------------------------------------------------------------------------------------//

Function BtnPopCalMenu(dFirst, dLast, oDtpFirst, oDtpLast, dMin, dMax)

  Local oPopupDate

     MENU oPopupDate POPUP 2015
       MENUITEM "today"  ACTION  (dFirst := date(), dLast := date(), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "Tomorrow"  ACTION (dFirst:=date()+1,dLast:=date()+1, oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "After tomorrow"  ACTION (dFirst:=date()+2,dLast:=date()+2, oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "Week"  ACTION (dFirst:=date(),dLast:=date()+6, oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       SEPARATOR
       MENUITEM "Current Mounth" ACTION (dFirst:=bom(date()),dLast:=EoM(date()), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "Next Mounth" ACTION (dFirst:=AddMonth(bom(date()),1),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "Season"  ACTION  (dFirst:=dMin,dLast:=dMax, oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       SEPARATOR
       MENUITEM "May"  ACTION  (dFirst:=AddMonth(Boy(date()),4),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "June"  ACTION  (dFirst:=AddMonth(Boy(date()),5),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "July"  ACTION  (dFirst:=AddMonth(Boy(date()),6),dLast:=EoM(dFirst), oDtpFirst:refresh(),oDtpLast:refresh(), oDlg:Update())
       MENUITEM "August"  ACTION  (dFirst:=AddMonth(Boy(date()),7),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
       MENUITEM "September" ACTION  (dFirst:=AddMonth(Boy(date()),8),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())
      ENDMENU

   return oPopupDate


-Ramesh Babu


thanks
I correct July with
MENUITEM "July" ACTION (dFirst:=AddMonth(Boy(date()),6),dLast:=EoM(dFirst), oDtpFirst:SetDate(dFirst), oDtpFirst:Update(), oDtpLast:SetDate(dLast), oDtpLast:Update())

But
September seem run not ok

then if you select before "september" and then "current mounth" you 'll see

dfirst 1 september
dlast 31 MAy

try to Change the date of your assignment to 17.05.2021
then try remming everything and leaving the menus alone
Today and September
and you will see that it does not work
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: Problem with datepick control
Posted: Mon May 10, 2021 07:45 AM
the September menu does not work correctly due to the range function (SetRange (dFirst, dMax))


WITH OBJECT oDtpLast
:lNoToday := .t.
:lNoTodayCircle := .t.
:SetRange( dFirst, dMax ) <----------------------------------------------
END

if you rem this line then also september menu run ok why ?

Nages ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Problem with datepick control
Posted: Tue May 11, 2021 07:21 AM
In the September menu
Instead of
Code (fw): Select all Collapse
dLast:=EoM(dFirst)


Change it as
Code (fw): Select all Collapse
dLast:=Min( dMax, EoM(dFirst) )
Regards



G. N. Rao.

Hyderabad, India
Posts: 7317
Joined: Thu Oct 18, 2012 07:17 PM
Re: Problem with datepick control
Posted: Tue May 11, 2021 08:45 AM

thanks rao now it seem run ok

Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com

Continue the discussion