Page 1 of 1
					
				:refreshall() not updating browse
				Posted: Fri Jul 29, 2016 3:19 pm
				by Tim K
				I'm pretty new to the Xpress browsing windows so I might be missing something obvious.  I'm building a restore function so that a user can continue from a saved state.   I save the data array to a file and then update the main data array to the saved array.  The data array gets updated fine but the browse won't update after a :refreshall() and forcestable().  The array is private.     I can see in the DC_xbpBrowse object that the :datasource is still not updated.
			 
			
					
				Re: :refreshall() not updating browse
				Posted: Fri Jul 29, 2016 10:50 pm
				by Wolfgang Ciriack
				You don't need to make the array private, make it local and set a new array for the DCBROWSE with dc_getbrowarray(oBrowse, aNew). For saving and restoring the array to a file use the functions DC_ARRAY_W(aAct,myfile) and aNew:=DC_ARRAY_R(myfile).
			 
			
					
				Re: :refreshall() not updating browse
				Posted: Sat Jul 30, 2016 6:30 am
				by rdonnay
				When you restore an array using DC_Array_R() or DC_ARestore(), you are creating a new pointer to the array in memory.
To attached the new array pointer to the browse do the following:
Code: Select all
aNewArray := DC_ARestore('MyNewArray.Ar')
oBrowse:dataSource := aNewArray
oBrowse:refreshAll()
 
			
					
				Re: :refreshall() not updating browse
				Posted: Sat Jul 30, 2016 3:47 pm
				by Cliff Wiernik
				Roger,
Are you saying we should be updating of the browse:dataSource instead of DC_Getbrowarray() or is there no difference using one method versus the other.
Cliff
			 
			
					
				Re: :refreshall() not updating browse
				Posted: Sat Jul 30, 2016 3:56 pm
				by rdonnay
				They both do the same thing.
			 
			
					
				Re: :refreshall() not updating browse
				Posted: Mon Aug 01, 2016 7:31 am
				by Tim K
				That did it, thanks, guys!
			 
			
					
				Re: :refreshall() not updating browse
				Posted: Fri Aug 12, 2016 5:35 am
				by digitsoft
				Hi Roger
Doing it this oBrowse Best Form :refreshAll (aNewArray) and that: refreshall you do this oBrowse: DataSource: = aNewArray) if you send the parameter, this modification the tube to do, but I would like to be Native Expresss
Because the same problem is if we use Object SQL
Thank you
			 
			
					
				Re: :refreshall() not updating browse
				Posted: Fri Aug 12, 2016 7:30 am
				by rdonnay
				Nolberto -
That sounds like a good idea and an easy implementation.
I just added it to _DCXBROW.PRG.
Line 1340
Code: Select all
WAS:
METHOD DC_XbpBrowse:RefreshAll()
IS:
METHOD DC_XbpBrowse:RefreshAll( aNewArray )
Line 1368
Code: Select all
WAS:
elseif ::dataSourceType = BROWSE_ARRAY   
IS:
elseif ::dataSourceType = BROWSE_ARRAY     
   IF Valtype(aNewArray) == 'A'
     ::dataSource := aNewArray
   ENDIF