Ich hoffe, das mit Eurer Hilfe, diese Funktion verbessert und ausgebaut wird, damit man nicht gezielt Eval(aArray[1,5,3]) angeben muß.
Mir ging es darum, mehrdim Arrays mit aEval durchzugehen, und die enthaltenen Codeblöcke zur Ausführung zu bringen.
Code: Alles auswählen
aadd(aXbp,{{||oXbp:=XbpStatic():new( drawingArea, , {16,640}, {100,24},;
{ { XBP_PP_BGCLR, GRA_CLR_DARKBLUE } } )},;
{||oXbp:caption := "Datum"},;
{||oXbp:clipSiblings:=.T.},;
{||oXbp:create()}})
aadd(aXbp,{{||oXbp := XbpSLE():new( drawingArea, , {16,616}, {100,24},;
{ { XBP_PP_BGCLR, GRA_CLR_DARKBLUE } } )},;
{||oXbp:bufferLength := 8},;
{||oXbp:tabStop := .T.},;
{||oXbp:dataLink := {|x| IIf( PCOUNT()==0,;
DtoC( DISPO->DAT_ANF ), DISPO->DAT_ANF := CtoD(x) ) }},;
{||oXbp:create():setData()},;
{||AAdd ( aEditControls, oXbp )}})
aEval(aXbp,{|cZeile|ArrayBlockEval(czeile,oXbp,drawingarea,aEditcontrols)})
function ArrayBlockEval(cZeile,oXbp,drawingarea,aEditcontrols)
if valtype(cZeile)="B"
eval(czeile)
endif
if valtype(czeile)="A"
a1:=len(cZeile)
for x = 1 to a1
if Valtype(cZeile[x])="B"
Eval(czeile[x])
if Valtype(cZeile[x])="A"
a2:=len(czeile[x])
for y = 1 to a2
if valtype(czeile[x,y])="B"
Eval(czeile[x,y])
endif
next
endif
endif
next
endif
return nil