Problem with datepick control Resolved !!!

Problem with datepick control Resolved !!!

Postby Silvio.Falconi » Sun May 02, 2021 9:33 am

I have two datepick as the Nages sample dtprang1.prg I add a small Menu pulldown where I set some dates

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


Image


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: Select all  Expand view

#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
Last edited by Silvio.Falconi on Tue May 11, 2021 11:29 am, edited 1 time in total.
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 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
User avatar
Silvio.Falconi
 
Posts: 6849
Joined: Thu Oct 18, 2012 7:17 pm

Re: Problem with datepick control

Postby Silvio.Falconi » Sun May 09, 2021 1:28 pm

any solution please ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 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
User avatar
Silvio.Falconi
 
Posts: 6849
Joined: Thu Oct 18, 2012 7:17 pm

Re: Problem with datepick control

Postby James Bott » Mon May 10, 2021 1: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
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Re: Problem with datepick control

Postby RAMESHBABU » Mon May 10, 2021 4:08 am

Silvio,

Please test this.

Code: Select all  Expand view

#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
User avatar
RAMESHBABU
 
Posts: 615
Joined: Fri Oct 21, 2005 5:54 am
Location: Secunderabad (T.S), India

Re: Problem with datepick control

Postby Silvio.Falconi » Mon May 10, 2021 7:28 am

RAMESHBABU wrote:Silvio,

Please test this.

Code: Select all  Expand view

#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 November 2023 - January 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
User avatar
Silvio.Falconi
 
Posts: 6849
Joined: Thu Oct 18, 2012 7:17 pm

Re: Problem with datepick control

Postby Silvio.Falconi » Mon May 10, 2021 7: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 November 2023 - January 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
User avatar
Silvio.Falconi
 
Posts: 6849
Joined: Thu Oct 18, 2012 7:17 pm

Re: Problem with datepick control

Postby nageswaragunupudi » Tue May 11, 2021 7:21 am

In the September menu
Instead of
Code: Select all  Expand view
dLast:=EoM(dFirst)


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

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10313
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Problem with datepick control

Postby Silvio.Falconi » Tue May 11, 2021 8: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 November 2023 - January 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
User avatar
Silvio.Falconi
 
Posts: 6849
Joined: Thu Oct 18, 2012 7:17 pm


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 45 guests

cron