L’attributo FieldBind è la superclasse degli attributi BindField, BindFieldFrom e BindFieldTo che, posti prima della definizione della classe o prima della definizione di un campo di tipo TObject o record, indicano che un campo della classe o del campo definito dalla proprietà SourcePath dovrà essere collegati a un elemento definito dalla proprietà TargetPath, appartenente a una seconda classe il cui nome corrisponde alla proprietà TargetClassName.
FieldBind non dovrà mai essere usato; in caso contrario, BindAPI lo ignorerà. Gli attributi che generalizzano FieldBind non introducono proprietà, né alterano quelle esistenti.
IsEnabled: boolean. Se True, viene effettuato il binding, 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.
SourcePath: definisce l’elemento del binding che si trova nella classe sorgente, ovvero quella in cui è inserito l’attributo. Può contenere un path, come “myField.AProp”. Obbligatorio.
TargetPath: definisce l’elemento del binding che si trova nella classe target, ovvero quella definita da TargetClassName. Può contenere un path, come “myField.AProp”. Obbligatorio.
FunctionName: nome di una funzione di tipo TplBridgeFunction definita all’interno della classe target. Il valore assegnato all’elemento che lo deve ricevere sarà il risultato di questa funzione. Facoltativo.
Vedi gli esempi degli attributi BindField, BindFieldFrom e BindFieldTo.
Per motivi di performance, il bind avviene sempre tra campi e proprietà di due classi; se occorre lavorare con un record, è necessario collocare l’attributo relativo a livello di classe e identificare il campo di tipo record con un path adatto; si dovrà quindi scrivere:
type [ClassBind(True, 'TTestBind')] [BindFieldTo('myRecordField.X', 'IntProp')] TfrmBindApiSimpleDemo = class(TForm) ... myRecordField: TMyRecord; ... end;
e non
type [ClassBind(True, 'TTestBind')] TfrmBindApiSimpleDemo = class(TForm) ... [BindFieldTo('X', 'IntProp')] myRecordField: TMyRecord; ... end;
Articoli più recenti: