Есть форма, на ней 2 грида. Нужно вывести информацию из 2-х таблиц и чтоб при нажатии на строку в 1-м гриде выбирались записи из другой таблицы, и отображались во 2-м гриде.
Вот код:
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.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
BOOL CZakazForm::OnInitDialog()
{
m_pZVSet = new CZakazViewSet(NULL);
m_pZVSet->Open();
CDialog::OnInitDialog();
//---------------------------------------------------------------------
BOOL bFound;
m_pZVSet->MoveFirst();
while(!m_pZVSet->IsEOF()){
bFound = FALSE;
for(int i= 0 ; i<m_arId.GetSize();i++){
if(m_arId[i].Compare(m_pZVSet->m_id)== 0 )
bFound = TRUE;
}
if(!bFound){
m_arId.Add(m_pZVSet->m_id);
m_arBall.Add(m_pZVSet->m_overball);
m_arSumm.Add(m_pZVSet->m_sum);
}
/* bFound = FALSE;
for(i=0; i<m_arKol.GetSize();i++){
if(m_arKol[i].Compare(m_pZVSet->m_count)==0)
bFound = TRUE;
}
m_arKol.Add(m_pZVSet->m_count);
}*/
bFound = FALSE;
for(i= 0 ; i<m_arArt.GetSize();i++){
if(m_arArt[i].Compare(m_pZVSet->m_articul)== 0 )
bFound = TRUE;
}
if(!bFound){
m_arArt.Add(m_pZVSet->m_articul);
m_arName.Add(m_pZVSet->m_name);
m_arPrice.Add(m_pZVSet->m_price);
m_arNetto.Add(m_pZVSet->m_netto);
}
m_pZVSet->MoveNext();
}
CRect rect;
int nRowZakaz;
int nRowProduct;
GetClientRect(rect);
// m_ZakazGrid.MoveWindow(rect,TRUE);
m_ZakazGrid.RedrawWindow(
NULL,
NULL,
RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);
m_ProductGrid.RedrawWindow(
NULL,
NULL,
RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);
m_ZakazGrid.SetCols( 3 );
m_ZakazGrid.SetRows(m_arId.GetSize() + 1 );
m_ProductGrid.SetCols( 4 );
m_ProductGrid.SetRows(m_arArt.GetSize() + 1 );
m_ZakazGrid.SetColWidth(- 1 , 1440 );
m_ProductGrid.SetColWidth(- 1 , 1440 );
m_ZakazGrid.SetRow( 0 );
m_ZakazGrid.SetCol( 0 );
m_ZakazGrid.SetText("¹ çàêàçà");
m_ZakazGrid.SetCol( 1 );
m_ZakazGrid.SetText("Ñóììà");
m_ZakazGrid.SetCol( 2 );
m_ZakazGrid.SetText("Áàëëû");
m_ProductGrid.SetRow( 0 );
m_ProductGrid.SetCol( 0 );
m_ProductGrid.SetText("Àðòèêóë");
m_ProductGrid.SetCol( 1 );
m_ProductGrid.SetText("Íàèìåíîâàíèå");
m_ProductGrid.SetCol( 2 );
m_ProductGrid.SetText("ÍÅÒÒÎ");
m_ProductGrid.SetCol( 3 );
m_ProductGrid.SetText("Öåíà");
nRowZakaz = m_arId.GetSize();
for(int i= 0 ; i<nRowZakaz; i++){
m_ZakazGrid.SetRow(i + 1 );
m_ZakazGrid.SetCol( 0 );
m_ZakazGrid.SetText(m_arId[i]);
m_ZakazGrid.SetCol( 1 );
m_ZakazGrid.SetText(m_arSumm[i]);
m_ZakazGrid.SetCol( 2 );
m_ZakazGrid.SetText(m_arBall[i]);
}
nRowProduct = m_arArt.GetSize();
for(i= 0 ; i<nRowProduct; i++){
m_ProductGrid.SetRow(i + 1 );
m_ProductGrid.SetCol( 0 );
m_ProductGrid.SetText(m_arArt[i]);
m_ProductGrid.SetCol( 1 );
m_ProductGrid.SetText(m_arName[i]);
m_ProductGrid.SetCol( 2 );
m_ProductGrid.SetText(m_arNetto[i]);
m_ProductGrid.SetCol( 3 );
m_ProductGrid.SetText(m_arPrice[i]);
}
m_ZakazGrid.SetRow(iRowZakaz);
m_ZakazGrid.SetCol( 1 );
m_ProductGrid.SetRow(iRowProduct);
m_ProductGrid.SetCol( 1 );
//---------------------------------------------------------------------
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
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.
void CZakazForm::OnClickZakazGrid()
{
CString buf;
BOOL bFound;
if(m_ZakazGrid.GetCol()!= 0 ){
iRowZakaz = m_ZakazGrid.GetRow();
m_ZakazGrid.SetRowSel(iRowZakaz);
buf = m_ZakazGrid.GetText();
m_ZakazGrid.SetColSel(m_ZakazGrid.GetCols()- 1 );
}
m_arArt.RemoveAll();
m_arName.RemoveAll();
m_arNetto.RemoveAll();
m_arPrice.RemoveAll();
m_pZVSet->MoveFirst();
while(!m_pZVSet->IsEOF()){
if(m_pZVSet->m_id.Compare(buf)== 0 ){
bFound=FALSE;
for(int i= 0 ;i<m_arArt.GetSize();i++){
if(m_arArt[i].Compare(m_pZVSet->m_articul)== 0 )
bFound=TRUE;
}
if(!bFound){
m_arArt.Add(m_pZVSet->m_articul);
m_arName.Add(m_pZVSet->m_name);
m_arNetto.Add(m_pZVSet->m_netto);
m_arPrice.Add(m_pZVSet->m_price);
}
}
m_pZVSet->MoveNext();
}
Invalidate();
}
Что получается. Нажимаю на запись в 1-м (m_ZakazGrid) гриде, а во втором (m_ProductGrid) ничего не происходит. Что это может быть? Как можно решить вопрос другими способами?