Bonjour,
Nous penchons sur un problème avec deux de mes collègues qui parait simple, mais pour lequel nous ne trouvons pas de solution...
Le problème est que nous avons une TcxGrid qui est remplit via un TDataSource et un TADODataSet que nous appelerons ici ADOInfo.
L'ADO est alimenté par une vue qui provient de notre base de données MSSQL.
Lorsque l'on clique sur l'une des lignes de cette grille, on appel l'évènement OnDataChange du DataSource qui va mettre à jour un autre ADO qui pointe sur une des tables qui est utilisés par la vue et qui va, dans un TDBMemo affiché le champ que nous nommerons pour l'exemple : 'Remarque'.
L'utilisateur doit être capable de modifier le champ 'Remarque' via ce Mémo.
Jusque là, pas de soucis, tout marche bien.
Cependant, lorsque l'utilisateur à mit à jour ce champ 'Remarque', on doit aller dans la première grille et changer la couleur de la ligne si le champ 'Remarque' est vide.
Le problème est que l'on perd le focus de la ligne qui vient d'être modifié.
à l'heure actuelle, on agit ainsi :
Le problème c'est qu'après le requery, le bookmark nous emmène sur le numéro de la ligne, sauf qu'après le requery, les données ne sont plus dans le même ordre, et donc il focus une ligne 'au hasard'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure A.DBMemoExit(Sender : TObject); var cbkInfo : TBookMark; begin if ADOMemo.Modified then begin ADOMemo.Post; cbkInfo := ADOInfo.GetBookMark; cxVue.DataController.DataSource := nil; ADOInfo.Requery(); cxVUe.DataController.DataSource := DSInfo; ADOInfo.GoToBookMark(cbkInfo) end; end;
Attention, comprenez bien que, ici, notre problème est que nous n'arrivons pas à changer la couleur de la ligne après la modification du champ remarque (ce pourquoi nous faisons un requery, qui pourrait être remplacer par une autre fonction)
Auriez-vous une solution pour ce problème ?
D'avance merci,
Wazzouille
Partager