Hi Jim
That's an interesting point of view. I don't believe the filter is holding anything in scope. I believe the filter is set but doesn't do anything until record movements are attempted.
To prove that, I whipped up a little code.
LOCAL loObject
loObject = CREATEOBJECT("Custom")
AddProperty(m.loObject,"icName")
m.loObject.icName = "Jim Nelson"
CREATE CURSOR c_SomeCursor (cField1 c(10))
INSERT INTO c_SomeCursor (cField1) VALUES ("Jim Nelson")
INSERT INTO c_SomeCursor (cField1) VALUES ("Mike Yearwood")
SET FILTER TO cField1 = m.loObject.icName
BROWSE
RELEASE m.loObject
CLEAR
DISPLAY MEMORY LIKE loObject
WAIT WINDOW "Hold down the shift key to see that the object is really gone."
GO TOP
>Just a theoretical question here, Mike...
>
>IF a filter was using a Object.Property.Value then would it not be impossible for the object to go 'out of scope' on the basis that the filter would be holding a reference to the object?
>
>cheers
>
>
>>Hi Mohammed
>>
>>Never SET FILTER using object.property values. If the object (or form) goes away or goes out of scope, the filter will fail. Also filter is slower with property values. Use constants via macro substitution or memory variables.
>>
>>>hi all,
>>>
>>> i need to change this statments to somthing more activeate
>>>(without error message filter cleared).
>>>
>>>SELECT mstr
>>>LOCATE FOR BILLNO=THISFORM.TEXT1.VALUE .AND. DATEIN=THISFORM.TEXT2.VALUE
>>>IF FOUND()
>>>SET FILTER TO BILLNO=THISFORM.TEXT1.VALUE .AND. DATEIN=THISFORM.TEXT2.VALUE
>>>
>>>
>>>
>>>thanks
>>>
>>>m.qasem