dialog_dataquery.cpp
来自「库存管理,有MSHflexgrid的使用和网络数据库存储」· C++ 代码 · 共 213 行
CPP
213 行
// Dialog_dataquery.cpp : implementation file
//
#include "stdafx.h"
#include "query.h"
#include "columns.h"
#include "column.h"
#include "Dialog_dataquery.h"
#include "comdef.h"
#include "Dlg_Edit.h"
#include "ADOconn.h"
#include "Dialog_Login.h"
//#include <afxdb.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDialog_dataquery dialog
CDialog_dataquery::CDialog_dataquery(CWnd* pParent /*=NULL*/)
: CDialog(CDialog_dataquery::IDD, pParent)
{
//{{AFX_DATA_INIT(CDialog_dataquery)
m_edit = _T("");
m_sta1 = _T("");
m_sta2 = _T("");
//}}AFX_DATA_INIT
}
void CDialog_dataquery::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialog_dataquery)
DDX_Control(pDX, IDC_ADODC1, m_adodc);
DDX_Control(pDX, IDC_DATAGRID1, m_datagrid);
DDX_Text(pDX, IDC_EDIT1, m_edit);
DDX_Text(pDX, IDC_STATIC1, m_sta1);
DDX_Text(pDX, IDC_STATIC2, m_sta2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDialog_dataquery, CDialog)
//{{AFX_MSG_MAP(CDialog_dataquery)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_DEL, OnDel)
ON_BN_CLICKED(IDC_EDIT, OnEdit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDialog_dataquery message handlers
void CDialog_dataquery::OnAdd()
{
// TODO: Add your control notification handler code here
CDlg_Edit dlg_edit;
dlg_edit.m_name="";
dlg_edit.m_code="";
dlg_edit.m_state="";
dlg_edit.m_hide="ADD";
//dlg_edit.SetWindowText("添加记录");
if (dlg_edit.DoModal()==IDOK){Refreshdata();}
}
void CDialog_dataquery::OnDel()
{
// TODO: Add your control notification handler code here
/*ADOconn adocon;
adocon.OnInitADOconn();
CString str[3];
str[0]=m_datagrid.GetColumns().GetItem(_variant_t(long(0))).GetText();
str[1]=m_datagrid.GetColumns().GetItem(_variant_t(long(1))).GetText();
str[2]=m_datagrid.GetColumns().GetItem(_variant_t(long(2))).GetText();
CString sqlstr,disp;
sqlstr.Format("DELETE FROM query_data WHERE name='%s' and code='%s' and state='%s'",str[0],str[1],str[2]);
disp.Format("确实要删除记录:'%s'吗?",str[0]);
if(AfxMessageBox(disp,MB_OKCANCEL,0)==IDOK)
{//使用上面的MB_OKCANCEL点击确定时原对话框不消失
adocon.ExecuteSQL((_bstr_t)(LPCTSTR)sqlstr);
Refreshdata();
}
adocon.ExitConnect(); */
CDialog_Login dlg;
dlg.DoModal();
}
void CDialog_dataquery::OnEdit()
{
// TODO: Add your control notification handler code here
CDlg_Edit dlg_edit;
dlg_edit.m_name=m_datagrid.GetColumns().GetItem(_variant_t(long(0))).GetText();
dlg_edit.m_code=m_datagrid.GetColumns().GetItem(_variant_t(long(1))).GetText();
dlg_edit.m_state=m_datagrid.GetColumns().GetItem(_variant_t(long(2))).GetText();
dlg_edit.m_hide="EDIT";
int a=dlg_edit.DoModal();
if (a==IDOK){Refreshdata();}
}
void CDialog_dataquery::Refreshdata()
{
m_adodc.SetRecordSource("SELECT name,code AS 密码,state AS 状态 FROM query_data");
m_adodc.Refresh();//一切操作均可在SELECT中进行,可改变顺序或之选择个别几列
_variant_t index;//需添加头文件:comdef.h
index=long(0);
m_datagrid.GetColumns().GetItem(index).SetWidth(80);//需添加头文件:columns.h和column.h
index=long(1);
m_datagrid.GetColumns().GetItem(index).SetWidth(80);
index=long(2);
m_datagrid.GetColumns().GetItem(index).SetWidth(80);
//m_datagrid.SetRow(2);
//m_datagrid.SetCol(0); //column指列,row指行
//m_edit=m_datagrid.GetText();
//UpdateData(false);
//m_datagrid.SetRefDataSource();
}
BOOL CDialog_dataquery::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
Refreshdata();
m_datagrid.SetCaption("网格查询框");
m_datagrid.GetColumns().GetItem(_variant_t(long(0))).SetCaption("aaaa");
m_datagrid.SetAllowUpdate(0);
/*ADOconn adocon;
adocon.OnInitADOconn();
CString str[3];
CString sqlstr;
sqlstr.Format("SELECT * FROM query_data");
_RecordsetPtr rs;
rs=adocon.GetRecordSet((_bstr_t)(LPCTSTR)sqlstr);
m_datagrid.SetRefDataSource(rs.Detach());
*/
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BEGIN_EVENTSINK_MAP(CDialog_dataquery, CDialog)
//{{AFX_EVENTSINK_MAP(CDialog_dataquery)
ON_EVENT(CDialog_dataquery, IDC_DATAGRID1, -600 /* Click */, OnClickDatagrid1, VTS_NONE)
ON_EVENT(CDialog_dataquery, IDC_DATAGRID1, 218 /* RowColChange */, OnRowColChangeDatagrid1, VTS_PVARIANT VTS_I2)
ON_EVENT(CDialog_dataquery, IDC_DATAGRID1, -601 /* DblClick */, OnDblClickDatagrid1, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CDialog_dataquery::OnClickDatagrid1()
{
// TODO: Add your control notification handler code here
/*
//m_datagrid.Refresh();//没用处
int a=m_datagrid.GetRow();//此种方法获得的都是上一次点击的行、列、值,延迟
int b=m_datagrid.GetCol();
m_sta1.Format("%d",a);
m_sta2.Format("%d",b);
m_edit=m_datagrid.GetText();
UpdateData(false);
*/
//m_edit=m_datagrid.GetSelText();
//Refreshdata();
//m_datagrid.SetAllowUpdate(0);
//m_edit=m_datagrid.GetColumns().GetItem(_variant_t(long(1))).GetText();
//UpdateData(false);
}
//使用单击的方法有延迟,应该使用下面的rowcolchang方法
void CDialog_dataquery::OnRowColChangeDatagrid1(VARIANT FAR* LastRow, short LastCol)
{
// TODO: Add your control notification handler code here
a=m_datagrid.GetRow();//此种方法获得的都是上一次点击的行、列、值,延迟
b=m_datagrid.GetCol();
m_sta1.Format("%d",a);
m_sta2.Format("%d",b);
//m_edit=m_datagrid.GetColumns().GetItem(_variant_t(long(b))).GetText();
m_edit=m_datagrid.GetText();//上一行的效果同这一行;GetSelText不能用,取值为空
m_datagrid.SetRow(a);
m_datagrid.SetCol(b);
// m_datagrid.GetColumns().GetItem(_variant_t(long(b))).SetLocked(1);
//m_datagrid.SetBackColor(RGB(200,200,150));
UpdateData(false);
}
void CDialog_dataquery::OnDblClickDatagrid1()
{
// TODO: Add your control notification handler code here
//m_datagrid.SetAllowUpdate(1);
CDlg_Edit dlg_edit;
dlg_edit.edit_str[0]=m_datagrid.GetColumns().GetItem(_variant_t(long(0))).GetText();
dlg_edit.edit_str[1]=m_datagrid.GetColumns().GetItem(_variant_t(long(1))).GetText();
dlg_edit.edit_str[2]=m_datagrid.GetColumns().GetItem(_variant_t(long(2))).GetText();
dlg_edit.m_name=dlg_edit.edit_str[0];
dlg_edit.m_code=dlg_edit.edit_str[1];
dlg_edit.m_state=dlg_edit.edit_str[2];
dlg_edit.m_hide="EDIT";
//dlg_edit.SetWindowText("修改记录");
if (dlg_edit.DoModal()==IDOK){Refreshdata();}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?