CRecordView 架構 + CListCtrl (Report 模式) 顯示資料
m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_ListCtrl.InsertColumn(0, "學號"); m_ListCtrl.InsertColumn(1, "姓名");
m_ListCtrl.InsertColumn(2, "數學"); m_ListCtrl.InsertColumn(3, "英語");
for(int i=0;i<4;i++) m_ListCtrl.SetColumnWidth(i, 90);
Show()int Show() {
int i=0; m_pSet->MoveFirst();
do {
CString s; s.Format("%d", m_pSet->m_column1); // 學號
m_ListCtrl.InsertItem(i, s);
m_ListCtrl.SetItemText(i,1, m_pSet->m_column2); // 姓名
s.Format("%d", m_pSet->m_column3); m_ListCtrl.SetItemText(i,2,s); // 數學
s.Format("%d", m_pSet->m_column4); m_ListCtrl.SetItemText(i,3,s); // 英語
i++; m_pSet->MoveNext();
} while(!m_pSet->IsEOF());
m_pSet->MoveFirst(); return i;
}
void OnAdd() {
CAddDlg dlg; if(dlg.DoModal()!=IDOK) return;
if(dlg.m_No==0) { AfxMessageBox("學號不可為零"); return; }
m_pSet->AddNew();
m_pSet->m_column1=dlg.m_No; m_pSet->m_column2=dlg.m_Name;
m_pSet->m_column3=dlg.m_Math; m_pSet->m_column4=dlg.m_Eng;
m_pSet->Update(); m_pSet->Requery(); m_pSet->MoveLast();
// 同步更新 ListCtrl...
}
void OnDelete() {
CDelDlg dlg; if(dlg.DoModal()!=IDOK) return;
if(dlg.m_Pwd!=1234) { AfxMessageBox("密碼錯誤"); return; }
m_pSet->MoveFirst();
while(!m_pSet->IsEOF()) {
if(dlg.m_No==m_pSet->m_column1) {
m_ListCtrl.DeleteAllItems();
m_pSet->Delete(); m_pSet->Requery(); Show(); break;
}
m_pSet->MoveNext();
}
}
void OnFind() {
CFindDlg dlg; if(dlg.DoModal()!=IDOK) return;
m_pSet->MoveFirst(); m_ListCtrl.DeleteAllItems(); BOOL found=FALSE;
while(!m_pSet->IsEOF()) {
if(dlg.m_Math==m_pSet->m_column3) {
found=TRUE; /* InsertItem... */ m_pSet->MoveNext();
} else m_pSet->MoveNext();
}
if(!found) AfxMessageBox("無符合記錄");
}
void OnSort() { m_ListCtrl.DeleteAllItems(); m_pSet->m_strSort="[學號]"; m_pSet->Requery(); Show(); }
void OnAll() { m_ListCtrl.DeleteAllItems(); Show(); }
// CLhwySet.cpp
CString GetDefaultConnect() { return "ODBC;DSN=not"; } // 控制台建立 DSN 名為 not
CString GetDefaultSQL() { return "[fen]"; } // 資料表名
或參考《用 Visual C++ 程式實現設定 ODBC 資料源》動態建立 DSN。