Hi Roger,
I have problem  with refreshing buttons when browsing an array. Below is a test program:
#include "dcdialog.ch"
#include "dcmsg.ch"
#include "appevent.ch"
#include "Nls.ch"
procedure appsys
return
PROCEDURE Main
Local aTest:={},GetList:={},GetOptions,oBrowse,oToolBar
PRIVATE Zbior,Zmienna
AAdd(aTest,{.T.,.F.,.F.,.F.})
AAdd(aTest,{.F.,.T.,.F.,.F.})
AAdd(aTest,{.F.,.F.,.T.,.F.})
AAdd(aTest,{.F.,.F.,.F.,.T.})
DC_GUI(.T.)
dc_msgboxgui(.t.)
dc_LangSet(DCLANG_POLISH)
nPos:=1
@1.0, 0 DCTOOLBAR oToolBar SIZE 16,1.5 BUTTONSIZE 4,1.5
  DCADDBUTTON CAPTION '1' WHEN {||aTest[nPos,1]} PARENT oToolBar
  DCADDBUTTON CAPTION '2' WHEN {||aTest[nPos,2]} PARENT oToolBar
  DCADDBUTTON CAPTION '3' WHEN {||aTest[nPos,3]} PARENT oToolBar
  DCADDBUTTON CAPTION '4' WHEN {||aTest[nPos,4]} PARENT oToolBar
@2.5,0 DCBROWSE oBrowse DATA aTest SIZE 20,10 FIT POINTER nPos CURSORMODE XBPBRW_CURSOR_ROW PRESENTATION DC_BrowPres()
     DCBROWSECOL DATA {||IF(DC_GetColArray(1,oBrowse),'T','N')} HEADER '1' PARENT oBrowse WIDTH 5
     DCBROWSECOL DATA {||IF(DC_GetColArray(2,oBrowse),'T','N')} HEADER '2' PARENT oBrowse WIDTH 5
     DCBROWSECOL DATA {||IF(DC_GetColArray(3,oBrowse),'T','N')} HEADER '3' PARENT oBrowse WIDTH 5
     DCBROWSECOL DATA {||IF(DC_GetColArray(4,oBrowse),'T','N')} HEADER '4' PARENT oBrowse WIDTH 5
DCGETOPTIONS NOMAXBUTTON NOMINBUTTON
DCREAD GUI MODAL FIT OPTIONS GetOptions TITLE CHR(255) EVAL {|o|SetAppFocus(oBrowse),SetAppWindow(o)}
RETURN
In an old program (with Express 242) this work correct: DCAddButtons are refreshed when moving the browse pointer. But when I use new version of Express (264) the WHEN clause of DCADDBUTTONS don't work. I look'd an one another version of Express (252) effect was the same - don't work. This is only when browsing an array.
Probably this is another case of problem corrected in varsion 249:
           ---------------- New to 1.9 (build 249) ----------
 1026. Fixed a regression that started in build 244.  The itemmarked callback
       of DCBROWSE was not calling DC_GetWhen() thereby not properly
       evaluating WHEN clauses after moving the browse pointer.
Regards
Piotr
			
			
									
									
						Evaluating WHEN clauses after moving the browse pointer
Re: Evaluating WHEN clauses after moving the browse pointer
This will work:
			
			
									
									Code: Select all
@2.5,0 DCBROWSE oBrowse DATA aTest SIZE 20,10 FIT ;
       POINTER nPos ;
       CURSORMODE XBPBRW_CURSOR_ROW ;
       PRESENTATION DC_BrowPres() ;
       ITEMMARKED {||DC_GetWhen(GetList)}  <<<<<<<<<<<<<<<<<<
 The eXpress train is coming - and it has more cars.
						