Livebinding TEdit avec changement via code
Bonjour ,
Je débute avec Livebinding, J'utilise une Tobjectlist<TObject>
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| TPath = Class
Private
FPathType, FOS, FDirectory: String;
Procedure SetPathType(Const Value: String);
Procedure SetOS(Const Value: String);
procedure SetDirectory(const Value: String);
Public
Constructor Create(APathType, AOS, ADirectory: String);
Property PathType: String Read FPathType Write SetPathType;
Property OS: String Read FOS Write SetOS;
Property Directory: String Read FDirectory write SetDirectory;
End;
TPathList = Class(TObjectList<TPath>)
Procedure LoadFromFile(AFileName: String);
Procedure SaveToFile(AFileName: String);
Constructor Create;
Destructor Destroy; Override;
End; |
dans TPrototypeBindSource.OnCreateAdaptater j'ai
Code:
1 2
|
ABindSourceAdapter := TListBindSourceAdapter<TPath>.Create(self, PathList, False); |
Ensuite j'ai relié visuellement une TStringGrid, TBindNavigator et 3 TEdit. À l'exécution ça fonctionne tout est relié lorsque j'ai sélectionne une ligne dans la TSringGrid les TEdit Affiche les données correspondantes Je peux les changer et dans le navigateur j'ai plus qu'à valider la modification.
Problème si dans le code je change le contenu d'un TEdit
Code:
1 2
|
eModelPathDirectory.Text := FileOpenDialog1.FileName; |
Le TBindNavigator Ne change pas d'état je ne peux pas valider la modification, Quelle est la bonne méthode ? J'ai trouvé une pseudo parade après l'affectation je fait
Code:
1 2
|
TLinkObservers.ControlChanged(eModelPathDirectory); |
mais sa valide directement le changement, Je voudrais plutôt Le fonctionnement normal comme quand on change le texte dans le TEdit à la main
Merci par avance pour votre aide