?? cinsertdlg.cpp
字號(hào):
// CInsertDlg.cpp : implementation file
//
#include "stdafx.h"
#include "OCIExample.h"
#include "CInsertDlg.h"
#include "GridCtrl.h"
//#include "ResizingDialog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCInsertDlg dialog
CCInsertDlg::CCInsertDlg(CWnd* pParent /*=NULL*/)
: CResizingDialog(CCInsertDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCInsertDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
//
//m_GridCtrl=new CGridCtrl;
m_GridCtrl==NULL;
IsSize=0;
//還是不能改變控件的大小,對(duì)話框倒可以改變大小了
CDWordArray c_info;
//IDC_LEFT_RESIZE,大小可以變化的對(duì)話框
SetControlInfo(IDC_MYGRIDCTRL,ANCHORE_RIGHT | RESIZE_VER);
//IDC_EDIT1,ANCHORE_RIGHT | RESIZE_VER
SetControlInfo(IDC_EDIT1,RESIZE_HOR | RESIZE_VER);
}
//自己加入的InsertDlg對(duì)話框的析構(gòu)函數(shù)
//在析構(gòu)函數(shù)中釋放在初始化函數(shù)中分配的指針
CCInsertDlg::~CCInsertDlg()
{
//
if(m_GridCtrl!=NULL)
delete m_GridCtrl;
}
void CCInsertDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCInsertDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCInsertDlg, CDialog)
//{{AFX_MSG_MAP(CCInsertDlg)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BUT_SAVEDATE, OnButSavedate)
ON_WM_KEYDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCInsertDlg message handlers
BOOL CCInsertDlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
//if(m_GridCtrl!=NULL)
//delete m_GridCtrl;
return CDialog::DestroyWindow();
}
//wm_getdlgcode
//WM_GETDLGCODE
void CCInsertDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
//關(guān)閉插入對(duì)話框時(shí),刪除在主對(duì)話框中刪除的InsertDlg
//的對(duì)象指針,并把其置為空
CDialog::OnClose();
COCIExampleApp *App=(COCIExampleApp *)AfxGetApp();
COCIExampleDlg *pMainDlg=(COCIExampleDlg *)App->m_pMainWnd;
if((pMainDlg->InsertDlg)!=NULL)
{
delete pMainDlg->InsertDlg;
pMainDlg->InsertDlg=NULL;
}
}
BOOL CCInsertDlg::OnInitDialog()
{
//-------------------------------------------------
m_GridCtrl=new CGridCtrl;
/*/-----------------------
CDialog::OnInitDialog();
COCIExampleDlg *mainDlg=new COCIExampleDlg;
// TODO: Add extra initialization here
int ColumnNumbers=mainDlg->ColumnNumbers;
CWnd *pViewBox_F;
pViewBox_F= GetDlgItem(IDC_MYGRIDCTRL);
CRect rGridRect;
pViewBox_F->GetClientRect(&rGridRect);
pViewBox_F->ClientToScreen(&rGridRect);
pViewBox_F->ScreenToClient(&rGridRect);
//m_GridCtrl->
m_GridCtrl->Create(rGridRect, pViewBox_F, 100);
//初始化GridCtrl
//可以編輯項(xiàng)使能
m_GridCtrl->SetEditable(TRUE);
//可以拖動(dòng)項(xiàng)使能
m_GridCtrl->EnableDragAndDrop(TRUE);
//
int ColoumNum;
if(ColumnNumbers==0)
ColoumNum = 10;//列數(shù)
else
ColoumNum=ColumnNumbers;
int RowNumber = 10;//行數(shù)
try
{
m_GridCtrl->SetRowCount(RowNumber);
m_GridCtrl->SetColumnCount(ColoumNum);
m_GridCtrl->SetFixedRowCount(2);//兩行灰色,一行為標(biāo)題,另外一行為個(gè)數(shù)
//為0時(shí),沒(méi)有灰色標(biāo)題行
//為1時(shí),第一行成灰色標(biāo)題;
//為2時(shí),從第一行開(kāi)始生成兩行灰色標(biāo)題
m_GridCtrl->SetFixedColumnCount(1);//為1時(shí),生成左邊灰色一行
//
GV_ITEM GV_Item,Item;
GV_Item.mask = GVIF_TEXT|GVIF_FORMAT;
GV_Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX;
//
Item.mask = GVIF_TEXT|GVIF_FORMAT;
Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX;
int i=0,j=0;
//列的名稱
GV_Item.row=0;
GV_Item.col=0;
GV_Item.strText="ColName";
m_GridCtrl->SetItem(&GV_Item);
//格式
GV_Item.row=1;
GV_Item.strText="ColFormat";
m_GridCtrl->SetItem(&GV_Item);
//ID
for(i=2;i<=10;i++)
{
GV_Item.row=i;
GV_Item.col=0;
GV_Item.strText.Format("%d",i-1);
m_GridCtrl->SetItem(&GV_Item);
}
//寫字段的名稱到列表上
for(i=0;i<ColumnNumbers;i++)
{
//SetColumnWidth(int nCol, int width),列的寬度
GV_Item.row=0;
GV_Item.col=i+1;//從第二列開(kāi)始寫標(biāo)題,第一列作為ID好
GV_Item.strText=ColName[i];
m_GridCtrl->SetItem(&GV_Item);
}
//寫輸入數(shù)據(jù)的格式,一方面,可以在第二行中提示,
//另一方面,可以在輸入的時(shí)候限制
CString strA="A",str9="9";
CString ColFormat="";
BOOL tempbool1=FALSE,tempbool2=FALSE;
for(i=0;i<ColumnNumbers;i++)
{
//若字段類型為字符型,則以如“AAA”的
//方式來(lái)描述表中字段可以接收的格式
tempbool1=coltype[i]==SQLT_CHR||\
coltype[i]==SQLT_VCS||\
coltype[i]==SQLT_STR;
tempbool2=coltype[i]==SQLT_NUM||\
coltype[i]==SQLT_INT||\
coltype[i]==SQLT_FLT||\
coltype[i]==SQLT_LNG;
if(tempbool1)
{
//for(j=0;j<collen[i];j++)
//strchar=strchar+strA;
//ColFormat=ColFormatstrA+;
ColFormat.Format("%d*AOr%d*字",collen[i],collen[i]/2);
}
//若字段類型為數(shù)字型,則以如“99.9”的
//方式來(lái)描述表中字段可以接收的格式
else if(tempbool2)
{
for(j=0;j<iprecision[i]-iscale[i];j++)
ColFormat=ColFormat+str9;
if(iscale[i]!=0)
{
ColFormat+=".";
for(j=0;j<iscale[i];j++)
ColFormat+=str9;
}
}
//若為日期型,則
else if(coltype[i]==SQLT_DAT)
{
ColFormat="OracleDate";
}
else
{
ColFormat="Others";
}
//
GV_Item.row=1;
GV_Item.col=i+1;//從第二列開(kāi)始寫
GV_Item.strText=ColFormat;
m_GridCtrl->SetItem(&GV_Item);
//清空
ColFormat="";
}
}
catch (CMemoryException* e)
{
e->ReportError();
e->Delete();
;
}
m_GridCtrl->Refresh();
//-------------------------------------------------*/
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CCInsertDlg::OnButSavedate()
{
// TODO: Add your control notification handler code here
//COCIExampleDlg *mainDlg=new COCIExampleDlg;
//這樣定義的話,會(huì)新生成一個(gè)主對(duì)話框的對(duì)象指針,再用這個(gè)
//指針去調(diào)用對(duì)話框的成員時(shí),原來(lái)的值將為空;因此用下面這種
//方法,即首先獲取一個(gè)App(CWinApp類型)的指針,而后用這個(gè)指針
//去獲取已經(jīng)存在的主對(duì)話框的的對(duì)象指針。
COCIExampleApp *App=(COCIExampleApp *)AfxGetApp();
//COCIExampleDlg *MainDlg=(COCIExampleDlg *)App->
COCIExampleDlg *pMainDlg=(COCIExampleDlg *)App->m_pMainWnd;
int shi=pMainDlg->ColumnNumbers;
//mainDlg->SaveInsertData();
//獲取所輸入的準(zhǔn)備添加的記錄
int i=0,j;
GV_ITEM GV_Item[20*20];
for(i=0;i<40;i++)
{
GV_Item[i].mask = GVIF_TEXT|GVIF_FORMAT|GVIF_STATE;
GV_Item[i].nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS|DT_NOPREFIX;
}
CString strColValues[20][20];
CString strColVal_one[20*20];
int ColumnNumbers;
if(pMainDlg->ColumnNumbers==0)
ColumnNumbers=2;
else
ColumnNumbers=pMainDlg->ColumnNumbers;
int row=m_GridCtrl->GetRowCount()-m_GridCtrl->GetFixedRowCount();
//獲取的是兩行數(shù)據(jù)
//int RowCount=m_GridCtrl->GetFixedRowCount();
for(i=0;i<row;i++)
{
//加上1的原因是,我們有一列是用來(lái)顯示其它東西的
for(j=0;j<ColumnNumbers+1;j++)
{
//
strColValues[i][j]=m_GridCtrl->GetItemText(i+2,j+1);
strColVal_one[i*ColumnNumbers+j]=m_GridCtrl->GetItemText(i+2,j+1);
GV_Item[i*ColumnNumbers+j].row=i+2;
GV_Item[i*ColumnNumbers+j].col=j+1;
m_GridCtrl->GetItem(&GV_Item[i*ColumnNumbers+j]);
//若沒(méi)有數(shù)值了,則跳出循環(huán)
//if(m_GridCtrl->GetItemText(i+2,j+1)=="")
//break;
}
//if(m_GridCtrl->GetItemText(i+2,j+1)=="")
//break;
//i=i+1;
}
//存在問(wèn)題,怎么判斷我所輸入的記錄的數(shù)目;
//先往下作罷,細(xì)節(jié)問(wèn)題,回過(guò)頭在說(shuō)
int col=ColumnNumbers;
pMainDlg->SaveInsertData(row,col,strColVal_one);
//if(mainDlg!=NULL)
//delete mainDlg;
}
//DEL void CCInsertDlg::OnSize(UINT nType, int cx, int cy)
//DEL {
//DEL CDialog::OnSize(nType, cx, cy);
//DEL
//DEL // TODO: Add your message handler code here
//DEL //可以移動(dòng),但是這個(gè)開(kāi)關(guān)不對(duì);在主對(duì)話框中并沒(méi)有改變
//DEL //IsSiz;
//DEL
//DEL COCIExampleApp *App=(COCIExampleApp *)AfxGetApp();
//DEL //COCIExampleDlg *MainDlg=(COCIExampleDlg *)App->
//DEL COCIExampleDlg *pMainDlg=(COCIExampleDlg *)App->m_pMainWnd;
//DEL
//DEL
//DEL if(pMainDlg->IsSizeInsertDlg!=0)
//DEL {
//DEL
//DEL if(!::IsWindow(m_GridCtrl->GetSafeHwnd()))
//DEL return;
//DEL
//DEL const cH = 25, d = 5;
//DEL CRect rcClient,rcListCtrl,rcQueryCap,rcQueryEdit;
//DEL rcClient.DeflateRect(d,35,d,d);
//DEL GetClientRect(rcClient);
//DEL //rcClient.top=120;
//DEL //Invalidate();
//DEL }
//DEL
//DEL
//DEL }
void CCInsertDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
UINT CCInsertDlg::OnGetDlgCode()
{
UINT result = OnGetDlgCode();
result = result | DLGC_WANTALLKEYS;//,dlgc_wantallkeys
return result;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -