Alors vais vous expliquer mon souci.
J'ai 2 dialogue, le principal qui s'ouvre au demarrage et le second qui s'ouvre grace à un bouton.
Le premier contient une comboBox et une msFlexGrid qui se remplisse dans le OnInitDialog().
Le but de ce dialogue est de pouvoir selectionner une ligne du flexGrid et de pouvoir afficher les detail de la ligne dans le second dialogue.
Celui-ci permet uniquement de supprimer ou pas cette ligne.
Dans le mesure ou la suppréssion est validé je voudrais que ma FlexGrid soit reactualisé c'est à dire se rafraichir sans l'enregistrement supprimé.
voici le oninitDialog de mon dialogue principal :
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 BOOL CParamTerminal::OnInitDialog() { CDialog::OnInitDialog(); ADOSelect mySel; //Ouverture du recordset if (!mySel.Open(myConn->ADOConn, requete)) { // cout << mySel.GetError() << endl; // Affichage de l'erreur AfxMessageBox("la requete a merdé"); } else { AfxMessageBox("requete executée"); int iRec = 0; CString sTemp; iRec = 2; m_FlexGrid.SetCols(mySel.GetColCount() + 1); m_FlexGrid.SetColWidth(0, 200); m_FlexGrid.SetColWidth(1, 10); for (int iCol = 1; iCol < mySel.GetColCount(); iCol++) { m_FlexGrid.SetRow(0); m_FlexGrid.SetCol(iCol+1); m_FlexGrid.SetText(mySel.GetFieldName(iCol)); m_FlexGrid.SetColWidth(iCol +1, 1500); } while (mySel.Fetch()) { CString sField; m_FlexGrid.SetRows(iRec); m_FlexGrid.SetRow(iRec-1); m_FlexGrid.SetRow(m_FlexGrid.GetRow()); m_FlexGrid.SetCol(0); sTemp.Format("%d", iRec-1); m_FlexGrid.SetText(sTemp); for (int iCol = 0; iCol < mySel.GetColCount(); iCol++) { m_FlexGrid.SetCol(iCol + 1); mySel.GetFieldVal(iCol, sField); m_FlexGrid.SetText(sField); } iRec++; } mySel.Close(); } UpdateData(false); return (true); }
la le code du bouton qui permet d'ouvrir le second dialogue
Ensuite j'arrive bien à supprimer la ligne dan la BDD et maintenan en fermant la seconde boite de dialogue je souhaiterai rafraichir mon ecran.
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
19 void CParamTerminal::OnBUTTONsupprimer() { int d1 = m_FlexGrid.GetRowSel(); CString a,b; a.Format("%x",d1); AfxMessageBox(a); b = m_FlexGrid.GetTextMatrix(d1, 1); //AfxMessageBox(m_FlexGrid.GetTextMatrix(d1, 2)); AfxMessageBox(b); // TODO: Add your control notification handler code here suppr_carte dlg(b,*myConn); if (dlg.DoModal()==IDOK) { } }
Voila j'espere avoir été claire en tout cas merci d'avance pour votre aide.
Partager