Posts: 6984
Joined: Fri Oct 07, 2005 07:07 PM
Re: XBrowse: how to load image data instead of image name
Posted: Tue Nov 03, 2020 09:28 AM
Hello Marc,
detached locals
Here is an explanation from MR. RAO.
Thank you, Mr. Rao, for always helping us.
Best regards,
Otto
____________________________________________________________________________
Creating controls in a loop from array is very tricky. It does not work as expected.
Let me show why:
Wrong code:
for n := 1 to 20
@ n * 20, 50 GET aVar[ n ] OF oWnd <clauses>
next n
After this loop the present value of " n " is 21.
When the dialog is activated and controls are to be shown, the value of "n" is 21 and naturally we get runtime error as subscript out of range.
Correct way:
for n := 1 to 20
aGet[ 1 ] := MakeGet( n * 20, 50, aVar, n, oWnd )
next n
ACTIVATE WINDOW ....
//--------------
static function MakeGet( nRow, nCol, aVar, n, oWnd )
local oget
@ nRow, nCol GET oGet VAR aVar[ n ] of oWnd <clauses>
// note this value of "n" remains the same till oGet goes out of scope
// the principle is called "detached locals"
return oGet