BindAPI: MethodBind

MethodBind

L’attributo MethodBind consente di collegare un metodo della classe target a un metodo o a un evento della classe base o di un suo membro.

Proprietà

IsEnabled: boolean. Se True, viene effettuato il binding con la classe target, altrimenti il binding non viene effettuato. Default: True.

TargetClassName: string. Il nome della classe che contiene campi e proprietà da collegare. Se il suo valore è ‘Self’, le istanze della classe collegheranno campi e proprietà al proprio interno. Obbligatorio.

SourceMethodName: string. E’ il nome della proprietà della classe che dovrà essere associato a un metodo della classe target. Obbligatorio.

NewMethodName: string. E’ il nome del metodo nella classe target che deve essere associato all’evento definito da SourceMethodName. Obbligatorio.

Attenzione: al momento, non c’è alcun controllo di compatibilità tra le signature dei metodi coinvolti nel binding. E’ responsabilità del programmatore assicurarsi che non vi siano problemi.

Esempi

In questo esempio l’evento OnClick del bottone btnTest esegue il metodo TestEventBind di un’istanza della classe TTestController. Forma breve:

[ClassBind(True, 'TTestController')]
[EventBind('btnTest.OnClick', 'TestEventBind')]
TfrmBindApiSimpleDemo = class(TForm) 
  btnTest: TButton;
end;

Come default, si assume che il binding sia abilitato e che la classe su cui si opera sia quella definita nell’unico attributo ClassBind. La forma estesa è:

 [ClassBind(True, 'TTestController')]
[EventBind(True, 'btnTest.OnClick', 'TestEventBind',  'TTestController')]
TfrmBindApiSimpleDemo = class(TForm) 
  btnTest: TButton;
end; 

Una sintassi equivalente è quella a livello del campo:

[ClassBind(True, 'TTestController')]
TfrmBindApiSimpleDemo = class(TForm) 
   [EventBind('OnClick', 'TestEventBind')]
   btnTest: TButton;
end; 

Nel caso dei metodi, infatti, il percorso è calcolato una sola volta in fase di binding; modificare il valore di btnTest, quindi, non propagherà il binding stesso e il metodo TestEventBind non sarà eseguito in caso di click.

API


Articoli più recenti: