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
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;
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
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;
Comme si la portée de cette classe était limitée (je ne vois pas où ?)

[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 ?