Detaches a delegate or a method group from an event.
General Formats
Syntax Rules
- event-expression must evaluate to an EVENT.
- delegate-instance must be an expression that evaluates to a delegate type of the same type as
event-expression.
- method-group must specify a method that is compatible with the delegate type of
event-expression.
General Rules
- If the delegate-instance or method has previously been attached to the specified event, then it will be detached, and no
longer executed when the event is executed.
Example
class-id. AttachExample.
01 changeCount1 binary-long static.
01 changeCount2 binary-long static.
method-id. main static.
01 names type myList.
01 del type ChangeDelegate.
procedure division.
set names to new myList
attach method self::ListChanged1 to names::ChangeEvent
set del to method self::ListChanged2
attach del to names::ChangeEvent
move 0 to changeCount1
move 0 to changeCount2
invoke names::"Add"("Max")
invoke names::"Add"("Hector")
invoke names::"Add"("Rover")
invoke names::"Add"("Spot")
if changeCount1 = 4
and changeCount2 = 4
display "Pass"
else
display "Fail"
end-if
detach del from names::ChangeEvent
move 0 to changeCount1
move 0 to changeCount2
invoke names::"Add"("A")
invoke names::"Add"("B")
invoke names::"Add"("C")
invoke names::"Add"("D")
if changeCount1 = 4
and changeCount2 = 0
display "Pass"
else
display "Fail"
end-if
detach method self::ListChanged1 from names::ChangeEvent
move 0 to changeCount1
move 0 to changeCount2
invoke names::"Add"("A")
invoke names::"Add"("B")
invoke names::"Add"("C")
invoke names::"Add"("D")
if changeCount1 = 0
and changeCount2 = 0
display "Pass"
else
display "Fail"
end-if
end method main.
method-id ListChanged1 static(i1 as binary-long) static.
add i1 to changeCount1
end method.
method-id. ListChanged2 (i1 as binary-long) static.
add i1 to changeCount2
end method.
end class.
class-id myList.
01 my-list List[string].
01 ChangeEvent type ChangeDelegate event public.
method-id. new.
create my-list
end method new.
method-id Add (s as string).
write my-list from s
if ChangeEvent not = null
invoke ChangeEvent(1)
end-if
end method.
end class.
delegate-id. ChangeDelegate (x1 as binary-long).
end delegate ChangeDelegate.