TXBrowse - oBrw:GoBottom() in the init clause

Post Reply
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

TXBrowse - oBrw:GoBottom() in the init clause

Post by nageswaragunupudi »

Our users insist that the last portion of the data be shown in the browse to start with ( for financial data like ledgers, daybooks, etc ) because they are more interested in seeing the latest information to start with.

I use code something like "activate dialog odlg on init ( obrw:gobottom(), obrw:setfocus() )"

This works well if the browse is in dialog but not when the browse is in window. But our requirement is to present the browses in mdi child windows (not in dialogs) because the users want to open two or three accounts simultaneously for comparison.

In the case of dialog the last rows of the data are filled fully in the browse area and the cursor is positioned on the last row. But in the case of window, only the last 2 or 3 lines are displayed at the top leaving the rest of the browse area blank. Here is an example to show the difference in behavior of xbrowse in dialogs and windows.

Code: Select all

#include 'fivewin.ch'
#include 'xbrowse.ch'

function main()

local ownd, obar

	define window ownd mdi
	define buttonbar obar of ownd
	define button of obar prompt 'dlg' action xbrdlg()
	define button of obar prompt 'win' action xbrwin()

	activate window ownd

return nil

static function xbrdlg()

local odlg, obrw

	use \fwh\samples\customer new alias cust1 shared

	define dialog odlg size 800,600 pixel
	obrw := txbrowse():new( odlg )
   obrw:calias := 'cust1'

	obrw:ntop     := 10
	obrw:nleft    := 10
	obrw:nbottom  := 290
	obrw:nright   := 390

//   obrw:setrdd()
	obrw:createfromcode()

	activate dialog odlg centered ;
		on init ( obrw:gobottom(), obrw:setfocus() )
	close cust1

return nil

static function xbrwin()

local ownd, obrw, calias

	calias := cgetnewalias( 'cust' )
	use \fwh\samples\customer new alias (calias) shared

	define window ownd mdichild of wndmain()
	obrw := txbrowse():new( ownd )
   obrw:calias := calias
	obrw:createfromcode()
	ownd:oclient := obrw

	activate window ownd ;
		on init ( obrw:gobottom(), obrw:setfocus() ) ;
		valid ( (calias)->(dbclosearea()), .t. )

return nil
I could find out the reason, but I could not find solution. In case of dialog the browse object knows the correct value of obrw:nheight and consequently the method obrw:brwheight returns the correct value, because we assign the value to data nbottom initially. In case of window, the browse object does not know the correct height information at the time of "on init" of window.

How can this be solved please?
Regards

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

Post by nageswaragunupudi »

I just found this works:

Code: Select all

activate window ownd on init ( obrw:nheight := ownd:nheight, obrw:gobottom(), obrw:setfocus() )
Regards

G. N. Rao.
Hyderabad, India
Post Reply