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 + -
显示快捷键?