>>COOOLL it works!!!
>>here is the function I came up with:
>>
>>
>>FUNCTION CopyProp
>>LPARA o1, o2
>>
>>IF TYPE('o1.Name') <> "C" OR TYPE('o2.Name') <> "C"
>> RETURN .F.
>>ENDIF
>>
>>AMEMBERS(aProps, o1)
>>
>>FOR i = 1 TO ALEN(aProps)
>> IF !ALLTRIM(UPPER(aProps(i)))$"CLASS:PARENTCLASS:BASECLASS:NAME"
>> uVal = GETPEM(o1,aProps(i))
>> IF PEMSTATUS(o2,aProps(i),5) AND;
>> !PEMSTATUS(o2,aProps(i),1) AND;
>> PEMSTATUS(o2,aProps(i),3) = TYPE('uVal') AND;
>> !PEMSTATUS(o2,aProps(i),2)
>> o2.&aProps(i) = uVal
>> ENDIF
>> ENDIF
>>ENDFOR
>>
>>
Good. Got a copy of code. Beware there is at least one situation that this will fail -> getpem(object, "value") and unfortunately controlsource is a general field.
>Cetin
Ahem. I mistakenly posted code from an old window. There's one too many lines in there; the line:
PEMSTATUS(o2,aProps(i),3) = TYPE('uVal') AND;
doesn't belong, it fails for obvious reasons. I misread the use of the '3' parameter.
Cetin, I have tested the code, and it works fine with ControlSource and value. Maybe I'm not understanding your warning... what properties would I have to use ReadExpression and WriteExpression with? (I guess using WriteExpression would get rid of the macro expansion...)
Erik Moore
Clientelligence