Bonjour,
J'essai toujours de faire fonctionner mon DBCtrlGrid comme je veux. J'ai donc revu tout le fonctionnement concernant ce composant dans mon application.
J'ai donc centralisé tous les évènements de mise à jour dans une seule et même fonction. Seulement, je dois pour voir récupérer un accès à chaque composant de la ligne modifiée. J'ai un pointeur sur un des objets.
Je pensais donc parcourir les composants pour les retrouver via FindNextControl. Mais, celui de la fiche ne s'arrête pas sur les controls de ce composant et il trouve les autres composants. Je ne peux pas retrouver le composant par son nom puisqu'il y a un composant portant le même nom pour chaque ligne du DBCtrlGrid.
De plus, je dois d'abord parcourir les composants en arrière pour trouver le 1er et ensuite parcourir tous les autres.
Voici un extrait de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 TWinControl *x; // positionnement sur le dbcombobox de la ligne en cours de traitement if (((TWinControl *)Sender)->Name == "DBComboBox1") { x = (TWinControl *)Sender; } else { if (((TWinControl *)Sender)->Name == "JvDBCalcEdit1") { x = FindNextControl((TWinControl *)Sender, false, false, false); } else { if (((TWinControl *)Sender)->Name == "JvDBCalcEdit2") { x = FindNextControl((TWinControl *)Sender, false, false, false); x = FindNextControl(x, false, false, false); } else { ...Et le FindNextControl du DBCtrlGrid n'est pas accessible, je ne peux pas directement l'utiliser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //On récupère un accès à tous les composants de la ligne en cours d'édition TDBComboBox *tempProduit = (TDBComboBox *)x; x = FindNextControl(x, true, false, false); TJvDBCalcEdit *tempPU = (TJvDBCalcEdit *)x; x = FindNextControl(x, true, false, false); TJvDBCalcEdit *tempQuantite = (TJvDBCalcEdit *)x; x = FindNextControl(x, true, false, false); ...
Vous avez une idée pour parcourir les composants d'une ligne d'un DBCtrlGrid ?
Partager