?? datamanage.cpp
字號:
// DataManage.cpp : implementation file
//
#include "stdafx.h"
#include "testODBC4.h"
#include "DataManage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define IDMAX 403100 //4年級3班100號
#define IDMIN 101001 //1年級1班001號
/////////////////////////////////////////////////////////////////////////////
// CDataManage dialog
CDataManage::CDataManage(CWnd* pParent /*=NULL*/)
: CDialog(CDataManage::IDD, pParent)
{
//{{AFX_DATA_INIT(CDataManage)
m_static_tree = _T("");
//}}AFX_DATA_INIT
}
void CDataManage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDataManage)
DDX_Control(pDX, IDC_LIST1, m_list1);
DDX_Control(pDX, IDC_TREE1, m_tree1);
DDX_Text(pDX, IDC_STATIC_TREE, m_static_tree);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDataManage, CDialog)
//{{AFX_MSG_MAP(CDataManage)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
ON_BN_CLICKED(IDC_BUTTON_add, OnBUTTONadd)
ON_BN_CLICKED(IDC_BUTTON_delete, OnBUTTONdelete)
ON_BN_CLICKED(IDC_BUTTON_modify, OnBUTTONmodify)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDataManage message handlers
BOOL CDataManage::OnInitDialog()
{
CDialog::OnInitDialog();
id_max = IDMAX;
id_min = IDMIN;
// TODO: Add extra initialization here
HICON hIconSmall[6];
ImageSmall.Create(16,16,0,6,6);
hIconSmall[0] = AfxGetApp()->LoadIcon(IDI_ICON1);
hIconSmall[1] = AfxGetApp()->LoadIcon(IDI_ICON2);
hIconSmall[2] = AfxGetApp()->LoadIcon(IDI_ICON3);
hIconSmall[3] = AfxGetApp()->LoadIcon(IDI_ICON4);
hIconSmall[4] = AfxGetApp()->LoadIcon(IDI_ICON5);
hIconSmall[5] = AfxGetApp()->LoadIcon(IDI_ICON6);
for(int n=0;n<6;n++)
ImageSmall.Add(hIconSmall[n]);
/////////////////////////////////////////////////////////////////////////////////////
//Create the tree control
CTreeCtrl* pTree = (CTreeCtrl*)GetDlgItem(IDC_TREE1);
pTree->SetImageList(&ImageSmall,TVSIL_NORMAL);
TV_INSERTSTRUCT tvinsert; //Build a TV_INSERTSTRUCT struct for inserting
tvinsert.hParent = NULL; //Not father node
tvinsert.hInsertAfter = TVI_LAST; //insert to the last of this layer
//Set mask as icon,selected icon and text
tvinsert.item.mask = TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;
tvinsert.item.hItem = NULL; //Set handle to NULL
tvinsert.item.state = 0; //State
tvinsert.item.stateMask = 0; //State mask
tvinsert.item.cchTextMax = 10; //biggest text length,ignore
tvinsert.item.iSelectedImage = 0; //index of the selected icon
tvinsert.item.cChildren = 0; //no child node
tvinsert.item.lParam = 0; //self-defined data
//Create the first layer
tvinsert.item.iImage = 4; //icon at normal time
tvinsert.item.pszText = "全部";
HTREEITEM hGradeAll = pTree->InsertItem(&tvinsert);
tvinsert.item.iImage = 2;
tvinsert.item.pszText = "大一";
HTREEITEM hGrade1 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "大二";
HTREEITEM hGrade2 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "大三";
HTREEITEM hGrade3 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "大四";
HTREEITEM hGrade4 = pTree->InsertItem(&tvinsert);
//Create the second layer
tvinsert.hParent = hGrade1; //Set father node as grade1
tvinsert.item.iImage = 3; //icon at normal time
tvinsert.item.pszText = "一班"; //insert first node in the first layer
HTREEITEM hClass11 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "二班";
HTREEITEM hClass12 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "三班";
HTREEITEM hClass13 = pTree->InsertItem(&tvinsert);
tvinsert.hParent = hGrade2; //Set father node as grade2
tvinsert.item.pszText = "一班"; //insert first node in the second layer
HTREEITEM hClass21 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "二班";
HTREEITEM hClass22 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "三班";
HTREEITEM hClass23 = pTree->InsertItem(&tvinsert);
tvinsert.hParent = hGrade3; //Set father node as grade3
tvinsert.item.pszText = "一班"; //insert first node in the first layer
HTREEITEM hClass31 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "二班";
HTREEITEM hClass32 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "三班";
HTREEITEM hClass33 = pTree->InsertItem(&tvinsert);
tvinsert.hParent = hGrade4; //Set father node as grade4
tvinsert.item.pszText = "一班"; //insert first node in the first layer
HTREEITEM hClass41 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "二班";
HTREEITEM hClass42 = pTree->InsertItem(&tvinsert);
tvinsert.item.pszText = "三班";
HTREEITEM hClass43 = pTree->InsertItem(&tvinsert);
pTree->SetItemData(hGradeAll,0); //為每一個句柄分配一個數值,便于以后確定當前得到的句柄在Tree中的序號
pTree->SetItemData(hGrade1,1);
pTree->SetItemData(hGrade2,2);
pTree->SetItemData(hGrade3,3);
pTree->SetItemData(hGrade4,4);
pTree->SetItemData(hClass11,5);
pTree->SetItemData(hClass12,6);
pTree->SetItemData(hClass13,7);
pTree->SetItemData(hClass21,8);
pTree->SetItemData(hClass22,9);
pTree->SetItemData(hClass23,10);
pTree->SetItemData(hClass31,11);
pTree->SetItemData(hClass32,12);
pTree->SetItemData(hClass33,13);
pTree->SetItemData(hClass41,14);
pTree->SetItemData(hClass42,15);
pTree->SetItemData(hClass43,16);
hRoot = pTree->GetRootItem();
////////////////////////////////////////////////////////////////////////////
// list control
m_list1.DeleteAllItems();
m_list1.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,
0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
m_list1.InsertColumn(0,"學號",LVCFMT_LEFT,80);
m_list1.InsertColumn(1,"姓名",LVCFMT_LEFT,80);
m_list1.InsertColumn(2,"性別",LVCFMT_LEFT,60);
m_list1.InsertColumn(3,"年齡",LVCFMT_LEFT,60);
m_list1.InsertColumn(4,"年級",LVCFMT_LEFT,60);
m_list1.InsertColumn(5,"班級",LVCFMT_LEFT,60);
m_list1.InsertColumn(6,"地址",LVCFMT_LEFT,90);
m_list1.InsertColumn(7,"數學",LVCFMT_LEFT,60);
m_list1.InsertColumn(8,"物理",LVCFMT_LEFT,60);
m_list1.InsertColumn(9,"英語",LVCFMT_LEFT,60);
m_list1.InsertColumn(10,"政治",LVCFMT_LEFT,60);
CString ItemStr = "";
int i=0;
while(!m_Pset->IsEOF())
{
ItemStr.Format("%d",m_Pset->m_id);
m_list1.InsertItem(i,"A",0);
m_list1.SetItemText(i,0,ItemStr);
ItemStr = m_Pset->m_name;
m_list1.SetItemText(i,1,ItemStr);
ItemStr = m_Pset->m_sex;
m_list1.SetItemText(i,2,ItemStr);
ItemStr = m_Pset->m_age;
m_list1.SetItemText(i,3,ItemStr);
ItemStr = m_Pset->m_grade;
m_list1.SetItemText(i,4,ItemStr);
ItemStr = m_Pset->m_class;
m_list1.SetItemText(i,5,ItemStr);
ItemStr = m_Pset->m_adress;
m_list1.SetItemText(i,6,ItemStr);
ItemStr.Format("%4.2f",m_Pset->m_math);
m_list1.SetItemText(i,7,ItemStr);
ItemStr.Format("%4.2f",m_Pset->m_physics);
m_list1.SetItemText(i,8,ItemStr);
ItemStr.Format("%4.2f",m_Pset->m_english);
m_list1.SetItemText(i,9,ItemStr);
ItemStr.Format("%4.2f",m_Pset->m_politics);
m_list1.SetItemText(i,10,ItemStr);
m_Pset->MoveNext();
i++;
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//點擊tree控件的操作
void CDataManage::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
CString str0;
char text[16];
TV_ITEM item;
unsigned int index_sql,index_sql2,hsize,size2;
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
CTreeCtrl* pTree = (CTreeCtrl*) GetDlgItem(IDC_TREE1);
HTREEITEM hSelected = pNMTreeView->itemNew.hItem;
if(hSelected != NULL)
{
item.mask = TVIF_HANDLE | TVIF_TEXT;
item.hItem = hSelected;
item.pszText = text;
item.cchTextMax = 15;
VERIFY(pTree->GetItem(&item));
SetDlgItemText(IDC_STATIC_TREE,text);
index_sql = pTree->GetItemData(hSelected);
if(index_sql==0)
{
id_max = IDMAX;
id_min = IDMIN;
}
else if( index_sql>=1 && index_sql<5)
{
id_max = index_sql*100000 + 3100;
id_min = index_sql*100000 + 1001;
}
else if( index_sql>=5 && index_sql<17 )
{
id_max = (index_sql-5)/3 *100000 + 100100 + 1000*((index_sql-5)%3+1);
id_min = (index_sql-5)/3 *100000 + 100001 + 1000*((index_sql-5)%3+1);
}
}
str0.Format("index_sql=%d,index_sql2=%d,id_max=%d,\nid_min=%d,hsize=%d,size=%d",index_sql,index_sql2,
id_max,id_min,hsize,size2);
//str0 += text;
str0 = text;
m_static_tree = str0;
UpdateData(FALSE);
RefreshList(id_min,id_max);
*pResult = 0;
}
//添加紀錄
void CDataManage::OnBUTTONadd()
{
CAddDlg dlgadd;
if(dlgadd.DoModal()==IDOK)
{
m_list1.InsertItem(m_list1.GetItemCount()+1,"A",0);
m_Pset->AddNew();
m_Pset->m_id = dlgadd.m_id;
m_Pset->m_name = dlgadd.m_name;
m_Pset->m_sex = dlgadd.m_sex;
m_Pset->m_age = dlgadd.m_age;
m_Pset->m_grade = dlgadd.m_grade;
m_Pset->m_class = dlgadd.m_class;
m_Pset->m_adress = dlgadd.m_adress;
m_Pset->m_math = dlgadd.m_math;
m_Pset->m_physics = dlgadd.m_physics;
m_Pset->m_english = dlgadd.m_english;
m_Pset->m_politics = dlgadd.m_politics;
m_Pset->Update();
m_Pset->Requery();
RefreshList(IDMIN,IDMAX);
}
}
//刪除選定的紀錄
void CDataManage::OnBUTTONdelete()
{
int a = m_list1.GetSelectionMark();
if(m_list1.GetSelectionMark()==-1)
return;
m_Pset->MoveFirst();
m_Pset->Move(m_list1.GetSelectionMark());
m_Pset->Delete();
m_Pset->MoveNext();
if(m_Pset->IsBOF())
m_Pset->SetFieldNull(NULL);
if(m_Pset->IsEOF())
m_Pset->MoveLast();
m_Pset->Requery();
RefreshList(id_min,id_max);
}
//修改選定的紀錄
void CDataManage::OnBUTTONmodify()
{
int a = m_list1.GetSelectionMark();
if(m_list1.GetSelectionMark()==-1)
return;
m_Pset->MoveFirst();
m_Pset->Move(m_list1.GetSelectionMark());
CModifyDlg dlgmodify;
dlgmodify.m_id = m_Pset->m_id;
dlgmodify.m_name = m_Pset->m_name;
dlgmodify.m_sex = m_Pset->m_sex;
dlgmodify.m_age = m_Pset->m_age;
dlgmodify.m_grade = m_Pset->m_grade;
dlgmodify.m_class = m_Pset->m_class;
dlgmodify.m_adress = m_Pset->m_adress;
dlgmodify.m_math = m_Pset->m_math;
dlgmodify.m_physics = m_Pset->m_physics;
dlgmodify.m_english = m_Pset->m_english;
dlgmodify.m_politics = m_Pset->m_politics;
if(dlgmodify.DoModal()==IDOK)
{
m_Pset->Edit();
m_Pset->m_id = dlgmodify.m_id;
m_Pset->m_name = dlgmodify.m_name;
m_Pset->m_sex = dlgmodify.m_sex;
m_Pset->m_age = dlgmodify.m_age;
m_Pset->m_grade = dlgmodify.m_grade;
m_Pset->m_class = dlgmodify.m_class;
m_Pset->m_adress = dlgmodify.m_adress;
m_Pset->m_math = dlgmodify.m_math;
m_Pset->m_physics = dlgmodify.m_physics;
m_Pset->m_english = dlgmodify.m_english;
m_Pset->m_politics = dlgmodify.m_politics;
m_Pset->Update();
m_Pset->Requery();
RefreshList(id_min,id_max);
}
}
//刷新列表框,參數為所要顯示的學生的學號的最大值和最小值
void CDataManage::RefreshList(int id_min,int id_max)
{
int i;
if(id_min>id_max)
{
MessageBox("顯示學號范圍有誤!");
return;
}
m_list1.DeleteAllItems();
m_list1.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,
0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
m_list1.InsertColumn(0,"學號",LVCFMT_LEFT,80);
m_list1.InsertColumn(1,"姓名",LVCFMT_LEFT,80);
m_list1.InsertColumn(2,"性別",LVCFMT_LEFT,60);
m_list1.InsertColumn(3,"年齡",LVCFMT_LEFT,60);
m_list1.InsertColumn(4,"年級",LVCFMT_LEFT,60);
m_list1.InsertColumn(5,"班級",LVCFMT_LEFT,60);
m_list1.InsertColumn(6,"地址",LVCFMT_LEFT,90);
m_list1.InsertColumn(7,"數學",LVCFMT_LEFT,60);
m_list1.InsertColumn(8,"物理",LVCFMT_LEFT,60);
m_list1.InsertColumn(9,"英語",LVCFMT_LEFT,60);
m_list1.InsertColumn(10,"政治",LVCFMT_LEFT,60);
for (i=11;i>=0;i--) //刪除第8波門以后的數據欄,必須倒著刪除
{
m_list1.DeleteColumn(11+i);
}
CString ItemStr = "";
i=0;
m_Pset->MoveFirst();
while(!m_Pset->IsEOF())
{
if( (m_Pset->m_id>=id_min) && (m_Pset->m_id<=id_max) )
{
ItemStr.Format("%d",m_Pset->m_id);
m_list1.InsertItem(i,"A",0);
m_list1.SetItemText(i,0,ItemStr);
ItemStr = m_Pset->m_name;
m_list1.SetItemText(i,1,ItemStr);
ItemStr = m_Pset->m_sex;
m_list1.SetItemText(i,2,ItemStr);
ItemStr = m_Pset->m_age;
m_list1.SetItemText(i,3,ItemStr);
ItemStr = m_Pset->m_grade;
m_list1.SetItemText(i,4,ItemStr);
ItemStr = m_Pset->m_class;
m_list1.SetItemText(i,5,ItemStr);
ItemStr = m_Pset->m_adress;
m_list1.SetItemText(i,6,ItemStr);
ItemStr.Format("%4.2f",m_Pset->m_math);
m_list1.SetItemText(i,7,ItemStr);
ItemStr.Format("%4.2f",m_Pset->m_physics);
m_list1.SetItemText(i,8,ItemStr);
ItemStr.Format("%4.2f",m_Pset->m_english);
m_list1.SetItemText(i,9,ItemStr);
ItemStr.Format("%4.2f",m_Pset->m_politics);
m_list1.SetItemText(i,10,ItemStr);
i++;
}
m_Pset->MoveNext();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -