Bonjour,
sur une forme j'ai deux DbCtrlGrids liées a 2 Datasets différents .
Pour les besoins de mon exemple , je vais utiliser les tables Suivantes
la première Grille est liée a MAITREMAITRE
- SAISON
- PRIXBASE
DETAIL
- REPRESENTANT
- SAISON
- PRIX
la seconde a une Query
ce qui fait que : a tout enregistrement de la dbctrlgrid1 correspond un enregistrement de dbctrlgrid2 . Les deux grilles sont disposées horizontalement, et le panneau actif est mis en couleur (selectedcolor:=clActiveCaption);
Code Query : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT COALESCE(D.SAISON,M.SAISON) AS SAISONREP, COALESCE(PRIX,M.PRIX_BASE) AS PRIXREP FROM MAITRE M LEFT JOIN DETAIL D ON M.SAISON=D.SAISON AND D.REPRESENTANT=:Representant
Voilà , la situation est posée
pour synchroniser les tables , je passe par les events afterScroll et me positionne donc sur le Champ SAISON via un locate (rassurez-vous , il y a au maximum 12 'SAISONS')
mon problème : les deux grilles , malgré une taille de panneau identiques ne sont pas toujours Synchrones .
Quelques fois je me retrouve avec un décalage (bien visible hélas) entre les deux grilles (ce sont les bons enregistrements) , le locate ayant tendance a positionner le panneau de l'enregistrement en colonne 1 .
Comment faire pour que les panneaux concordent ?
j'ai essayé :
- DBCtrlGrid2.Panel:=DBCtrlGrid1.Panel // ne fonctionne pas panel seul les panels visibles sont numérotés
- de dériver un DBCtrlGrid en Stringgrid // échec lamentable leftcol et col ne bougent pas
Je patauge lamentablement , sur les scrollby et il y a certainement des pistes que j'ai encore ignorées
Partager