Básicamente es este, le quité algunas líneas por las que no pasa por que son IF y no son necesarias, el IF comentado simplemente fue una prueba que hice para ver si el problema eran las variables que traía, pero de cualquier manera me marca el error. Con cualquier otro control (por lo menos de los que he probado) funciona sin problemas.
FOR EACH aCtrl IN aCtrls
aStyle := &( "{" + __pp_process( ::oIde:pPP_style, aCtrl[ 4 ] ) + "}" )
aAdd( aStyle, WS_CHILD )
aAdd( aStyle, WS_VISIBLE )
cClase := upper( aCtrl[ 1 ] )
oCtrl := hb_execFromArray( cClase )
oCtrl:nEstilo := hb_execFromArray( @hb_bitXor(), aStyle )
aVariables := ::oIde:hVariables[ cClase ]
aParams := array( len( aVariables ) )
if ( nPos := aScan( aVariables, { | x | x == "bSetGet" } ) ) > 0
if cClase == "TCHECKBOX"
aParams[ nPos ] := { || .f. }
else
aParams[ nPos ] := { || aCtrl[ 2 ] }
endIf
endIf
if ( nPos := aScan( aVariables, { | x | x == "cCaption" } ) ) > 0
aParams[ nPos ] := aCtrl[ 2 ]
endIf
hEval( ::oIde:hControles[ cClase ]:default, { | k, v | xEach := k, aParams[ aScan( aVariables, { | x | x == xEach } ) ] := v } )
//IF cClase == "TTABS"
// aParams[ aScan( aVariables, { | x | x == "oWnd" } ) ] := oDlg
// aParams := { ,, { "Hola" }, { || nil }, oDlg, 1 }
//?? aParams
//ELSE
aParams[ aScan( aVariables, { | x | x == "oWnd" } ) ] := oDlg
//ENDIF
hb_execFromArray( oCtrl, "new", aParams )
IF "INICIO" $ ::oIde:hControles[ cClase ]
aEval( ::oIde:hControles[ cClase ]:inicio, { | a | hb_execFromArray( oCtrl, a[ 1 ], a[ 2 ] ) } )
ENDIF
oCtrl:move( aCtrl[ 6 ] * nFactor, aCtrl[ 5 ] * nFactor, aCtrl[ 7 ] * nFactor, aCtrl[ 8 ] * nFactor, .t. )
NEXT