Bonjour,
je tente d'utiliser les événements onAssignedValue et onAssigningValue d'un BindGridLink (oui, encore les Livebindings)
je bute sur une déclaration pour obtenir la colonne
en gros voilà le code
l'erreur à la compilation TGridDataObject non déclaré alors que la déclaration est bien dans Fmx.Bind.Editors
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 uses ... Fmx.Bind.Editors, ... procedure TMainForm.BindGridLink1AssignedValue(Sender: TObject; AssignValueRec: TBindingAssignValueRec; const Value: TValue); var AnObject : TObject; begin AnObject:=AssignValueRec.OutObj; if AnObject.ClassNameIs('TGridDataObject') then // mon objet est bien de la class TGridDataObject begin if (AnObject as TGridDataObject).Column=7 then // TGridDataObject non déclaré ! ShowMessage(Value.ToString); end; end;
Comme si la portée de cette classe était limitée (je ne vois pas où ?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 type TGridDataObject = class private FColumn: Integer; [Weak] FOwner: TCustomGrid; FCallback: TProc<TValue>; procedure SetData(const AValue: TValue); function GetData: TValue; public constructor Create(AOwner: TCustomGrid; AColumn: Integer); property Owner: TCustomGrid read FOwner; property Column: Integer read FColumn; // Expression engine requires properties to be readable property Data: TValue read GetData write SetData; end;
[Edit] le fait est qu'en y regardant de plus près la déclaration de ce type se trouve dans la partie implémentation !
comment faire dans ces conditions ?
Partager