Fait troublant autour d'une déclaration
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:
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:
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 ?