⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgxsdj.cpp

📁 一个超完整的医药管理系统。请勿用于商业用途
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// DlgXSDJ.cpp : implementation file
//

#include "stdafx.h"
#include "a1.h"
#include "DlgXSDJ.h"
#include "ScrollPrintView.h"
#include "mmsystem.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CDlgXSDJ dialog

 CDlgXSDJ::CDlgXSDJ(bool isxs,CWnd* pParent /*=NULL*/)
	: CDialog(CDlgXSDJ::IDD, pParent)
 {
 	//{{AFX_DATA_INIT(CDlgXSDJ)
	m_strPh = _T("");
	//}}AFX_DATA_INIT
	 this->m_plistXSDJ=NULL;
	 this->m_bXs=isxs;
	 wf=NULL;
	 m_draw=new CDrawXSDJ(this);
 }

void CDlgXSDJ::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgXSDJ)
	DDX_Control(pDX, IDC_BUTTON_OK, m_btnOk);
	DDX_Control(pDX, IDC_EDIT_KHNAME, m_editKhName);
	DDX_Control(pDX, IDC_EDIT1, m_editPh);
	DDX_Control(pDX, IDC_COMBO1, m_comboJsfs);
	DDX_Control(pDX, IDC_EDIT_KHID, m_editKhId);
	DDX_Control(pDX, IDC_DATETIMEPICKER1, m_tcRq);
	DDX_Control(pDX, IDC_COMBO2, m_comboJsr);
	DDX_Text(pDX, IDC_EDIT1, m_strPh);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgXSDJ, CDialog)
	//{{AFX_MSG_MAP(CDlgXSDJ)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_WM_MOVE()
	ON_WM_CREATE()
	ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
	ON_WM_DRAWITEM()
	ON_BN_CLICKED(IDC_BUTTON_PRINT, OnButtonPrint)
	//}}AFX_MSG_MAP
	ON_MESSAGE(MYMESSAGE_XSDJ_SETTHEFOCUS,SetTheFocus)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgXSDJ message handlers
BOOL CDlgXSDJ::OnInitDialog() 
{
	CDialog::OnInitDialog();
	CRect rect;

	InitStringLists();
	InitnListXSDJ();
	if(!this->InitBaseInfo())
	{
		MessageBox("初始化基本数据失败");
		return true;
	}

	m_editKhId.SetFocus();

	return FALSE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgXSDJ::OnCancel()
{
		if(MessageBox("确定退出登记模块?","注意",MB_YESNO)==IDYES)
		{
			if(MessageBox("是否保存?","注意",MB_YESNO)==IDNO)
			{
				CDialog::OnCancel();

			}
			else
				this->OnButtonOk();
		}
			return;
}

void CDlgXSDJ::OnOK() 
{
	//	CDialog::OnOK();
}
BOOL CDlgXSDJ::PreTranslateMessage(MSG* pMsg) 
{	

	if(pMsg==NULL) return false;
	const HWND hwnd=pMsg->hwnd;

	if(pMsg->message==WM_SETFOCUS)
	{

		if(hwnd!=this->m_plistXSDJ->m_edit.GetSafeHwnd())
		{

			::SendMessage(m_plistXSDJ->m_edit.GetSafeHwnd(),WM_KEYDOWN,27,0);
		}
	}
	if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==13)
	{
		if(hwnd!=this->m_btnOk.GetSafeHwnd())
		this->SetTheFocus();
	}
	if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_TAB)
	{
		if(this->FromHandle(hwnd)->GetDlgCtrlID()==IDCANCEL)
		{
			pMsg->wParam=VK_CONTROL;
			this->SetTheFocus();
		}
			
	}
	if(pMsg->message==WM_DESTROY)
		TRACE("WM_DESTROY");
	if(pMsg->message==WM_CLOSE)
		TRACE("WM_CLOSE");
	if(pMsg->message==WM_QUIT)
		TRACE("WM_QUIT");

	return CDialog::PreTranslateMessage(pMsg);
}
void CDlgXSDJ::OnButton1() 
{
	m_plistXSDJ->DeleteSelected();
}
bool CDlgXSDJ::InitStringLists()
{
	CString sql;
	_variant_t value;
	m_strlistKh=new CStringList[2];
	
	if(m_bXs)
	{
		m_strlistKh[0].AddTail("客户编号");
		m_strlistKh[1].AddTail("客户全称");
		sql.Format("select DISTINCT kh_id,kh_name from tabkh order by kh_id asc");
		if(!this->m_runsql.CheckSQLResult(sql))return false;
		while(!m_runsql.m_recordset->adoEOF)
		{
			value=m_runsql.m_recordset->GetCollect("kh_id");
			if(value.vt!=VT_NULL)
			{
				this->m_strlistKh[0].AddTail((char*)(_bstr_t)value);
			}
			value=m_runsql.m_recordset->GetCollect("kh_name");
			if(value.vt!=VT_NULL)
			{
				this->m_strlistKh[1].AddTail((char*)(_bstr_t)value);
			}

			m_runsql.m_recordset->MoveNext();
		}
	}
	else
	{
		m_strlistKh[0].AddTail("供应商编号");
		m_strlistKh[1].AddTail("供应商全称");
		sql.Format("select DISTINCT gys_id,gys_name from tabgys order by gys_id asc");
		if(!this->m_runsql.CheckSQLResult(sql))return false;
		while(!m_runsql.m_recordset->adoEOF)
		{
			value=m_runsql.m_recordset->GetCollect("gys_id");
			if(value.vt!=VT_NULL)
			{
				this->m_strlistKh[0].AddTail((char*)(_bstr_t)value);
			}
			value=m_runsql.m_recordset->GetCollect("gys_name");
			if(value.vt!=VT_NULL)
			{
				this->m_strlistKh[1].AddTail((char*)(_bstr_t)value);
			}

			m_runsql.m_recordset->MoveNext();
		}
	}

	this->m_popList.Create(this);
	m_popList.SelectStringList(2,this->m_strlistKh);
	this->m_editKhId.SelectPopList(&m_popList);
	this->m_editKhName.SelectPopList(&m_popList);

	return true;
}
void CDlgXSDJ::OnMove(int x, int y) 
{
	CDialog::OnMove(x, y);
	::PostMessage(this->m_editKhId.GetSafeHwnd(),MYMESSAGE_EDIT_KHID_MOVED,0,0);
	::PostMessage(this->m_editKhName.GetSafeHwnd(),MYMESSAGE_EDIT_KHID_MOVED,0,0);
	if(m_plistXSDJ!=NULL)
	::PostMessage(this->m_plistXSDJ->GetSafeHwnd(),MYMESSAGE_EDIT_MOVED,0,0);
}
void CDlgXSDJ::SetTheFocus()
{
	HWND hwnd=::GetFocus();
	int iID=::GetDlgCtrlID(hwnd);
	switch(iID)
	{
	case IDC_EDIT_KHID:
		{
			this->m_editKhName.SetFocus();
			m_editKhName.SetSel(0,-1);
			break;
		}
	case IDC_EDIT_KHNAME:
		{
		//	m_editKhName.SetSel(0,0);
			this->m_comboJsfs.SetFocus();
			break;
		}
	case IDC_COMBO1:
		{
			this->m_comboJsr.SetFocus();
			break;
		}
	case IDC_COMBO2:
		{
			this->m_tcRq.SetFocus();
			break;
		}
	case IDC_DATETIMEPICKER1:
		{
			this->m_plistXSDJ->m_iEditedIndex=-1;
			::PostMessage(m_plistXSDJ->GetSafeHwnd(),WM_SETFOCUS,0,0);
			
			::PostMessage(m_plistXSDJ->GetSafeHwnd(),SETNEXTITEMPHFOCUS,0,0);
			//this->m_comboJsfs.SetFocus();
			break;
		}
	case ID_NEWLISTLSXSDJ:
		{
			this->GetDlgItem(IDC_EDIT_SS)->SetFocus();
			break;
		}
	case IDCANCEL:
		{
			this->m_editKhId.SetFocus();
			this->m_editKhId.SetSel(0,-1);
			break;

		}
	}
}
bool CDlgXSDJ::InitBaseInfo()
{
	m_font.CreateFont(-12, 0, 0, 0, 400, FALSE, FALSE,
	                0,GB2312_CHARSET , OUT_DEFAULT_PRECIS,//ANSI_CHARSET
	                CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
	                 VARIABLE_PITCH | FF_SCRIPT, "楷体_GB2312");//DEFAULT_PITCH FF_MODERN

	m_headfont.CreateFont(-24, 0, 0, 0, 400, FALSE, FALSE,
	                0,GB2312_CHARSET , OUT_DEFAULT_PRECIS,//ANSI_CHARSET
	                CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
	                 VARIABLE_PITCH | FF_SCRIPT, "楷体_GB2312");//DEFAULT_PITCH FF_MODERN
	GetDlgItem(IDC_STATIC_XSDJ)->SetFont(&m_headfont,true);
	CRect rect;CString str;
	wf=new CWhiteFrame[4];
	CString  strs[4];

	
	this->m_sXsPh=m_strPh=this->ChanShengXSDJPH();
	m_editPh.SetWindowText(m_strPh);
//	m_editPh.SetFont(&m_font,true);
//	this->UpdateData(false);
	
	if(m_bXs)
	{
		strs[0]="客户编号:";
		strs[1]="客户名称:";
	}
	else
	{
		this->GetDlgItem(IDC_STATIC_PH)->SetWindowText("入库登记票号:");
		this->SetWindowText("入库登记");
		GetDlgItem(IDC_STATIC_XSDJ)->SetWindowText("入库登记");
		GetDlgItem(IDC_STATIC_RQ)->SetWindowText("入库日期:");
		this->GetDlgItem(IDC_STATIC_ZJE)->SetWindowText("0.00");
		this->GetDlgItem(IDC_STATIC_SS)->SetWindowText("实付");
		strs[0]="供应商编号:";
		strs[1]="供应商名称:";
	}



	strs[2]="结算方式:";
	strs[3]="经手人:";
//	strs[4]="日期:";
	rect=CRect(10,16,80,35);
	for(int i=0;i<4;i++)
	{
		wf[i].Create(strs[i],WS_CHILD|WS_VISIBLE,rect,&m_whiteframe);
		wf[i].SetFont(&m_font,true);		
		wf[i].Invalidate();
		rect.OffsetRect(0,24);
	}
//	m_tcRq.SetParent(&m_whiteframe);
	m_comboJsr.SetParent(&m_whiteframe);
	m_editKhName.SetParent(&m_whiteframe);
	m_editKhId.SetParent(&m_whiteframe);
	m_comboJsfs.SetParent(&m_whiteframe);

//	m_tcRq.SetFont(&m_font,true);
	m_comboJsr.SetFont(&m_font,true);
	m_editKhName.SetFont(&m_font,true);
	m_editKhId.SetFont(&m_font,true);
	m_comboJsfs.SetFont(&m_font,true);
	this->SetFont(&m_font,true);
	
	//init time;
	CTime m_dateRq = CTime::GetCurrentTime();
	this->m_tcRq.SetTime(&m_dateRq);

	//init jsr;
	CString sql;
	sql.Format("select yg_name from tabyginfo");
	if(!m_runsql.CheckSQLResult(sql))return false;
	_variant_t value;
	while(!m_runsql.m_recordset->adoEOF)
	{
		value=m_runsql.m_recordset->GetCollect("yg_name");
		if(value.vt!=VT_NULL)
		this->m_comboJsr.AddString((char*)(_bstr_t)value);
		m_runsql.m_recordset->MoveNext();
	}
	//init jsfs;
	sql.Format("select jsfs from tabjsfs");
	this->m_runsql.RunSQL(sql);
	while(!m_runsql.m_recordset->adoEOF)
	{
		value=m_runsql.m_recordset->GetCollect("jsfs");
		if(value.vt!=VT_NULL)
		this->m_comboJsfs.AddString((char*)(_bstr_t)value);
		m_runsql.m_recordset->MoveNext();
	}
	this->m_comboJsfs.SetCurSel(0);
	this->m_comboJsr.SetCurSel(0);
	
	return true;
}
bool CDlgXSDJ::InitnListXSDJ()
{
	CRect rect_nlist(10,300,700,650);
	this->GetClientRect(&rect_nlist);
	rect_nlist.top=150;
	rect_nlist.left+=10;
	rect_nlist.right-=10;
	rect_nlist.bottom=350;
	this->m_plistXSDJ=new CListXSDJ(m_bXs);
	m_plistXSDJ->Create(WS_CHILD|WS_VSCROLL  
		|WS_VISIBLE|LVS_REPORT|WS_BORDER,
		rect_nlist,this,ID_NEWLISTLSXSDJ);

	this->m_plistXSDJ->ModifyStyle(LVS_EDITLABELS, 0L);		//禁止标题编辑
	m_plistXSDJ->ModifyStyle(0L, LVS_REPORT);			//设为Report类型
	m_plistXSDJ->ModifyStyle(0L, LVS_SHOWSELALWAYS);		//始终高亮度被选中的表项
	m_plistXSDJ->ModifyStyle(0L, LVS_NOSORTHEADER);

	m_plistXSDJ->ModifyStyle( LVS_OWNERDRAWFIXED,0L);
	m_plistXSDJ->SetExtendedStyle( LVS_EX_FULLROWSELECT |		//允许整行选中
		LVS_EX_GRIDLINES |	//画出网格线
		LVS_EX_FLATSB				//扁平风格的滚动条	
		);	
	CString str;
	
	// 1、先产生numTitle列
	int i=0;

	m_plistXSDJ->InsertColumn( i, "药品编号" );
	m_plistXSDJ->InsertColumn( 1, "药品名称" );
	m_plistXSDJ->InsertColumn( 2, "仓库名称" );
	m_plistXSDJ->InsertColumn( 4, "数量" );
	m_plistXSDJ->InsertColumn( 5, "金额" );
	if(m_bXs)
	{
	m_plistXSDJ->InsertColumn( 3, "单价" );
//	m_plistXSDJ->InsertColumn( 6, "实收" );
	}
	else
	{
	m_plistXSDJ->InsertColumn( 3, "进价" );
//	m_plistXSDJ->InsertColumn( 6, "实付" );
	
	}

// 2、插入1行

		m_plistXSDJ->InsertItem(0,"");

	// 3、调整列宽
	RECT rect2;
	m_plistXSDJ->GetWindowRect(&rect2);
	int wid = rect2.right - rect2.left;

	for( i=0; i<7; i++ )
	{

		m_plistXSDJ->SetItemText(0,i,"");
		m_plistXSDJ->SetColumnWidth( i, wid/6 );
	}
	
	m_plistXSDJ->SetSubItemCanEdited(0);
	m_plistXSDJ->SetSubItemCanEdited(1);
	m_plistXSDJ->SetSubItemCanEdited(2);
	m_plistXSDJ->SetSubItemCanEdited(3);
	m_plistXSDJ->SetSubItemCanEdited(4);
	m_plistXSDJ->SetSubItemCanEdited(5);
//	m_plistXSDJ->SetSubItemCanEdited(6);

	m_plistXSDJ->Invalidate(false);
	return true;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -