to execute this command I have to add EVAL (aGet [1]: bchange)
sample :
DEFINE DIALOG oDlg SIZE 400,200 Title "test date,valid"
@ 12,5 SAY "Dal :" OF oDlg PIXEL SIZE 100,20 TRANSPARENT
@ 10,35 GET aGet[1] VAR dDataIniziale SIZE 100,12 PIXEL OF oDlg ;
BITMAP ".\bitmaps\cal.bmp" ;
ACTION (dDataIniziale:= XbrGetDate(txt_to_date( dDataIniziale) , "Select a date",dStagioneMin,dStagioneMax, .t., 0.6, ,aGet[1] ),;
IIF( dDataIniziale=ctod("") .or. dDataIniziale=nil ,;
(dDataIniziale:="Select a date",aGet[1]:CTEXT(date_to_txt(dDataIniziale))),;
aGet[1]:CTEXT(date_to_txt(dDataIniziale)) ) ,;
aGet[1]:refresh(),EVAL( aGet[1]:bchange)) ;
VALID ValidareData(txt_to_date(dDataIniziale),txt_to_date( dDataFinale) ) ;
ON CHANGE ( dtemp1:= txt_to_date( dDataIniziale),;
dtemp2:= txt_to_date( dDataFinale) ,;
dDataIniApp:=dtemp1,;
dDataFinApp:=dtemp2,;
CHANGE_PLAN( dDataIniApp,dDataFinApp,lShowNumeri,lshowPagamenti) )
If I not insert EVAL( aGet[1]:bchange) the get not execute the command ON CHANGE why ?
the test
Code: Select all
#include "FiveWin.ch"
#include "constant.ch"
//----------------------------------------------------------------------------//
REQUEST HB_Lang_IT
REQUEST HB_CODEPAGE_ITWIN
function Main()
local oDlg , aGet := Array(5), oBtnCal
local dDataIniziale,dDataFinale // date of the get
local dStagioneMin // date limit
local dStagioneMax // date limit
local dtemp1,dtemp2
local dDataIniApp
local dDataFinApp
local lShowNumeri,lshowPagamenti
SET _3DLOOK ON
SET CENTURY ON
SET DATE ITALIAN
HB_LangSelect("IT")
HB_SetCodePage("ITWIN")
dDataIniApp := date() // date format // date of application
dDataFinApp := date()
dDataIniziale:= date_to_txt(date()) // string format
dDataFinale := date_to_txt(date())
dStagioneMin := ctod("17/05/2020") // date format
dStagioneMax := ctod("20/09/2020")
lShowNumeri := .t.
lshowPagamenti := .t.
DEFINE DIALOG oDlg SIZE 400,200 Title "test date,valid"
@ 12,5 SAY "Dal :" OF oDlg PIXEL SIZE 100,20 TRANSPARENT
@ 10,35 GET aGet[1] VAR dDataIniziale SIZE 100,12 PIXEL OF oDlg ;
BITMAP ".\bitmaps\cal.bmp" ;
ACTION (dDataIniziale:= XbrGetDate(txt_to_date( dDataIniziale) ,;
"Select a date",dStagioneMin,dStagioneMax, .t., 0.6, ,aGet[1] ),;
IIF( dDataIniziale=ctod("") .or. dDataIniziale=nil ,;
(dDataIniziale:="Select a date",aGet[1]:CTEXT(date_to_txt(dDataIniziale))),;
aGet[1]:CTEXT(date_to_txt(dDataIniziale)) ) ,;
aGet[1]:refresh(),EVAL( aGet[1]:bchange)) ;
VALID ValidareData(txt_to_date(dDataIniziale),txt_to_date( dDataFinale) ) ;
ON CHANGE ( dtemp1:= txt_to_date( dDataIniziale),;
dtemp2:= txt_to_date( dDataFinale) ,;
dDataIniApp:=dtemp1,;
dDataFinApp:=dtemp2,;
CHANGE_PLAN( dDataIniApp,dDataFinApp,lShowNumeri,lshowPagamenti) )
aGet[1]:lAdjustBtn:=.t.
//aGet[1]:oBtn:oCursor:= TCursor():New(,'HAND')
@ 26,5 SAY "al :" OF oDlg PIXEL SIZE 100,20 TRANSPARENT
@ 24,35 GET aGet[2] VAR dDataFinale SIZE 100,12 PIXEL OF oDlg ;
BITMAP ".\bitmaps\cal.bmp" ;
ACTION (dDataFinale:= XbrGetDate(txt_to_date( dDataFinale) ,;
"Select a date",dStagioneMin,dStagioneMax, .t., 0.6, ,aGet[2] ),;
IIF( dDataFinale=ctod("") .or. dDataFinale=nil ,;
(dDataFinale:="Select a date",aGet[2]:CTEXT(date_to_txt(dDataFinale))),;
aGet[2]:CTEXT(date_to_txt(dDataFinale)) ) ,;
aGet[2]:refresh(),EVAL( aGet[2]:bchange)) ;
VALID ValidareData(txt_to_date(dDataIniziale),txt_to_date( dDataFinale) ) ;
ON CHANGE ( dtemp1:= txt_to_date( dDataIniziale),;
dtemp2:= txt_to_date( dDataFinale) ,;
dDataIniApp:=dtemp1,;
dDataFinApp:=dtemp2,;
CHANGE_PLAN( dDataIniApp,dDataFinApp,lShowNumeri,lshowPagamenti) )
aGet[2]:lAdjustBtn:=.t.
@ 07,170 BTNBMP oBtnCal FILENAME ".\bitmaps\cal.bmp" FLAT SIZE 20,14 PIXEL OF oDlg NOBORDER
oBtnCal:oPopUp:= { |oBtn| BtnPopCalMenu( @dDataIniziale,@dDataFinale,aGet) }
@ 40,10 button "test" size 40,12 pixel of oDlg action CHANGE_PLAN(dDataIniApp, dDataFinApp,lShowNumeri,lshowPagamenti)
ACTIVATE DIALOG oDlg CENTERED
return nil
//------------------------------------------------------------------------------------//
Function CHANGE_PLAN( dDateStart, dDateEnd,lShowNumeri,lshowPagamenti)
msginfo( date_to_txt(dDateStart)+CRLF+date_to_txt(dDateEnd)," Check " )
RETURN nil
//------------------------------------------------------------------------------------//
Function ValidareData( dFechaIni, dFechaFin )
LOCAL lValid := .T.
IF ( dFechaIni > dFechaFin )
alert( "The end date must be greater than the start date " )
lValid := .F.
ENDIF
RETURN lValid
//------------------------------------------------------------------------------------//
Function BtnPopCalMenu( dDataIniziale,dDataFinale,aGet)
Local oPopupDate
MENU oPopupDate POPUP 2015
MENUITEM "Oggi";
ACTION (dDataIniziale:=date(), dDataFinale:=date(), ;
aGet[1]:CTEXT(date_to_txt(dDataIniziale)), ;
aGet[1]:refresh() ,;
aGet[2]:CTEXT(date_to_txt(dDataFinale)), ;
aGet[2]:refresh() )
MENUITEM "Domani" ;
ACTION (dDataIniziale:=date()+1,dDataFinale:=date()+1, ;
aGet[1]:CTEXT(date_to_txt(dDataIniziale)),;
aGet[1]:refresh() ,;
aGet[2]:CTEXT(date_to_txt(dDataFinale)), ;
aGet[2]:refresh() )
MENUITEM "DopoDomani";
ACTION (dDataIniziale:=date()+2,dDataFinale:=date()+2, ;
aGet[1]:CTEXT(date_to_txt(dDataIniziale)),;
aGet[1]:refresh() ,;
aGet[2]:CTEXT(date_to_txt(dDataFinale)), ;
aGet[2]:refresh() )
SEPARATOR
MENUITEM "Pulisci";
ACTION ( dDataIniziale:="select a date", dDataFinale:="select a date",;
aGet[1]:CTEXT(dDataIniziale), ;
aGet[1]:refresh() ,;
aGet[2]:CTEXT(dDataFinale), ;
aGet[2]:refresh() )
ENDMENU
return oPopupDate
//--------------------------------------------------------------------------------------------------------------//
Function date_to_txt(dDate)
return FW_TRANSFORM( dDate, "ddd, dd mmm yyyy" )
//--------------------------------------------------------------------------------------------------------------//
Function txt_to_date(cDate)
return uCharToVal(cDate, "D" )
//--------------------------------------------------------------------------------------------------------------//