Bonjour,
je cherche à déplacer par Dnd (par glisser-lâcher) une ligne d'une Grid. Le champ concerné est xxINDEX (Integer).
Ce qui fonctionne : si je charge mes données dans une TStringGrid (donc sans lien permanent avec la table), je peux déplacer sans problème une ligne. C'est la méthode que j'utilisais sur mes TStringGrid en Lazarus. Je n'utilisais pas les TdbGrid.
Ce qui ne fonctionne pas : si j'utilise une TGrid liée (par Dataset classique ou LiveBindings) directement et de manière permanente à une table dont un champ contient le N° des lignes (clé), au mieux il ne se passe rien... et au pire, suivant les modifications (de plus en plus hasardeuses ) du code, cela plante. J'ai même corrigé la structure de la table : j'ai initialement utilisé une cle unique sur le champ xxINDEX, puis une simple clé sur ce champ. Le résultat est toujours identique. J'ai également essayé avec un seul DataSet puis 2 (un pour l'affichage et un deuxième pour le update) sans plus de succès.
Je pense en effet que c'est au niveau du recalcul de xxIndex puis son Update, que cela coince.... Quand par exemple, la ligne "8" est déplacée en ligne "4" par le Dnd, les xxIndex doivent être recalculés (xxINDEX = Row)... mais comme la Grid est en prise directe avec la table, il y a un problème de chronologie dans les Updates. Je ne peux pas changer 2 indexes à la fois...
Bref, quelqu'un sait-il déplacer à la souris une ligne d'une TGrid liée à une table qui contient un champ indexé enregistrant le N° de la ligne, index qui sert de parcours (ORDER BY) à la lecture de la dite table ? Si possible en FMX... en espérant le code transposable aux composants TMS, mais je suis également preneur d'une approche VCL.
Merci.
Partager