Cobra/Keywords/ignore

Материал из Викиучебника — открытых книг для открытого мира

Ignore[править]

ignore отключает обработку возникающего события.

Обратный Listen

Синтаксис[править]

ignore <event>, <method-reference>

Пример[править]

use System.Windows.Forms

...
        button = Button(parent=p, autoSize=true, text='One', tag=1)
        # connect event and handling code
        listen button.click, ref .clickHandler
        ...
        # disconnect event and its handling code
        ignore button.click, ref .clickHandler
...
def clickHandler(source as Object, args as EventArgs)  # doClick
    pass

Пример использования сигнатуры и обработку событий и удобный метод управления событиями.

# delegate for ActionEvent  <eventName>EventHandler
sig ActionEventHandler(sender as Object, args as EventArgs)

class Generator
    # event dcl for event called Action
    # event <eventName>Event as <sigName> (<eventName>EventHandler)    
    event actionEvent as ActionEventHandler

    # (protected) method to raise/fire the event for this class 
    # {on,fire}<eventName>Event
    def _onActionEvent(args as EventArgs)      # fireActionEvent
        raise .actionEvent, args

class Listener
    # the event handler method do<eventName>
    def doAction(source as Object, args as EventArgs)
        print 'Event received from [source]'

...
    def driver
        g = Generator()
        l = Listener()
        
        #tie the generator event to the Listener method
        listen g.actionEvent, ref l.doAction

        ...    

        #untie the event and listener
        ignore g.actionEvent, ref l.doAction

Метод обработчика события должна быть ссылкой на метод, а не вызовом метода.
На практике это означает, что большинство выражений ignore будет иметь второй аргумент в виде ссылки на имя метода.