How delegates work

function Start( ) as void
	
DelegatesTester{}:Check()
	
return         

delegate IntDelegate( nParm as int ) as void                          

class DelegatesTester             
	
constructor()
	
return
	
method Check() as void
local oDelegate as IntDelegate
	
oDelegate := Execute1
oDelegate:Invoke( 123 )
oDelegate:Invoke( 456 )
oDelegate := Execute2
oDelegate:Invoke( 123 )
oDelegate:Invoke( 456 )    
// oDelegate:Invoke( "Hi" )    
oDelegate := Execute3
	
oDelegate( 789 )
	
return	
	
method Execute1( nParm as int ) as void
	
System.Console.WriteLine( "From Execute1: " + nParm:ToString() )
	
return	
	
method Execute2( nParm as int ) as void
	
System.Console.WriteLine( "From Execute2: " + nParm:ToString() )
	
return	

method Execute3( cParm as string ) as void
	
System.Console.WriteLine( "From Execute3: " + cParm )
	
return	
	
end class