📄 dlgkcpd.cpp
字号:
// DlgKCPD.cpp : implementation file
//
#include "stdafx.h"
#include "a1.h"
#include "DlgKCPD.h"
#include "ScrollPrintView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgKCPD dialog
CDlgKCPD::CDlgKCPD(CWnd* pParent /*=NULL*/)
: CDialog(CDlgKCPD::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgKCPD)
m_iJsr = -1;
m_tRq = 0;
//}}AFX_DATA_INIT
this->m_listKcpd=NULL;
m_draw=new CDrawKCPD(this);
}
void CDlgKCPD::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgKCPD)
DDX_Control(pDX, IDC_EDIT1, m_editPh);
DDX_Control(pDX, IDC_BUTTON2, m_btnDel);
DDX_Control(pDX, IDCANCEL, m_btnCancel);
DDX_Control(pDX, IDC_BUTTON1, m_btnOk);
DDX_Control(pDX, IDC_DATETIMEPICKER1, m_tcRq);
DDX_Control(pDX, IDC_COMBO1, m_comboJsr);
DDX_CBIndex(pDX, IDC_COMBO1, m_iJsr);
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_tRq);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgKCPD, CDialog)
//{{AFX_MSG_MAP(CDlgKCPD)
ON_BN_CLICKED(IDC_BUTTON2, OnButtonDelete)
ON_BN_CLICKED(IDC_BUTTON1, OnButtonOk)
ON_WM_MOVE()
ON_BN_CLICKED(IDC_BUTTON_PRINT, OnButtonPrint)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgKCPD message handlers
bool CDlgKCPD::InitnListKcpd()
{
CRect rect_nlist(10,150,700,350);
this->GetClientRect(&rect_nlist);
rect_nlist.top=110;
rect_nlist.left+=10;
rect_nlist.right-=10;
rect_nlist.bottom=340;
m_listKcpd=new CListKCPD;
m_listKcpd->Create(WS_CHILD|WS_VISIBLE|LVS_REPORT|WS_BORDER,rect_nlist,this,ID_NEWLISTLSXSDJ);
this->m_listKcpd->ModifyStyle(LVS_EDITLABELS, 0L); //禁止标题编辑
m_listKcpd->ModifyStyle(0L, LVS_REPORT); //设为Report类型
m_listKcpd->ModifyStyle(0L, LVS_SHOWSELALWAYS); //始终高亮度被选中的表项
m_listKcpd->ModifyStyle(0L, LVS_NOSORTHEADER);
// m_listKcpd->SetBkColor(RGB(0,200,200));
// m_listKcpd->SetTextBkColor(RGB(0,200,200));
m_listKcpd->ModifyStyle( LVS_OWNERDRAWFIXED,0L);
m_listKcpd->SetExtendedStyle( LVS_EX_FULLROWSELECT | //允许整行选中
// LVS_EX_HEADERDRAGDROP | //允许整列拖动
LVS_EX_GRIDLINES | //画出网格线
// LVS_EX_ONECLICKACTIVATE | //单击选中表项
LVS_EX_FLATSB //扁平风格的滚动条
// LVS_EX_UNDERLINEHOT
);
CString str;
// 1、先产生numTitle列
// m_listKcpd->SetItemCount(20);
int i=0;
m_listKcpd->InsertColumn( i, "仓库名称" );
m_listKcpd->InsertColumn( 1, "药品编号" );
m_listKcpd->InsertColumn( 2, "药品名称" );
m_listKcpd->InsertColumn( 3, "数量" );
// 2、插入1行
m_listKcpd->InsertItem(0,"");
// 3、调整列宽
RECT rect2;
m_listKcpd->GetWindowRect(&rect2);
int wid = rect2.right - rect2.left;
for( i=0; i<4; i++ )
{
m_listKcpd->SetItemText(0,i,"");
m_listKcpd->SetColumnWidth( i, wid/4 );
}
m_listKcpd->SetSubItemCanEdited(0);
m_listKcpd->SetSubItemCanEdited(1);
m_listKcpd->SetSubItemCanEdited(2);
m_listKcpd->SetSubItemCanEdited(3);
m_listKcpd->Invalidate(false);
return true;
}
BOOL CDlgKCPD::OnInitDialog()
{
CDialog::OnInitDialog();
InitBaseInfo();
InitnListKcpd();
this->m_editPh.SetWindowText(this->ChanShengPh());
::PostMessage(this->m_tcRq.GetSafeHwnd(),WM_ACTIVATE ,WA_CLICKACTIVE,0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
bool CDlgKCPD::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
this->GetDlgItem(IDC_STATIC_KCPD)->SetFont(&m_headfont,true);
CRect rect;
this->GetClientRect(&rect);
rect.left+=10;
rect.right-=320;
rect.top+=10;
rect.bottom=90;
m_wt.Create("",WS_CHILD|WS_VISIBLE,rect,this,700);
rect=CRect(15,25,100,45);
this->m_wfRq.Create("日期:",WS_CHILD|WS_VISIBLE,rect,&m_wt);
rect.OffsetRect(0,25);
m_wfRq.SetFont(&m_font,true);
this->m_wfJsr.Create("经手人:",WS_CHILD|WS_VISIBLE,rect,&m_wt);
m_wfJsr.SetFont(&m_font,true);
this->m_comboJsr.SetParent(&m_wt);
this->m_tcRq.SetParent(&m_wt);
this->m_comboJsr.SetFont(&m_font,true);
this->m_tcRq.SetFont(&m_font,true);
m_tRq=CTime::GetCurrentTime();
this->m_tcRq.SetTime(&m_tRq);
CString sql;
sql.Format("select yg_name from tabyginfo");
this->m_runsql.RunSQL(sql);
_variant_t value;
while(!m_runsql.m_recordset->adoEOF)
{
value=m_runsql.m_recordset->GetCollect("yg_name");
this->m_comboJsr.AddString((char*)(_bstr_t)value);
m_runsql.m_recordset->MoveNext();
}
//this->m_iJsr=0;
this->m_comboJsr.SetCurSel(0);
// this->UpdateData(false);
return true;
}
void CDlgKCPD::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
}
void CDlgKCPD::OnButtonDelete()
{
this->m_listKcpd->DeleteSelected();
}
void CDlgKCPD::OnButtonOk()
{
this->BeginWaitCursor();
this->EndWaitCursor();
if(!this->m_listKcpd->CheckAll())return ;
CString sql;int i=0;
_variant_t value;
CA1App * app=(CA1App*)AfxGetApp();
CString pd_ph;this->m_editPh.GetWindowText(pd_ph);
CString czy=app->m_sUserName;
CString jsr;this->m_comboJsr.GetWindowText(jsr);
CString rq;this->m_tcRq.GetWindowText(rq);
long l_sl,old_sl,ying_kui;
CString yp_id,yp_name,cangku;
int n=m_listKcpd->GetItemCount();
if(n<=0)
{
MessageBox("请输入登记信息","注意");
this->m_listKcpd->m_iEditedIndex=-1;
m_listKcpd->InsertItem(0,"");
::PostMessage(m_listKcpd->GetSafeHwnd(),WM_SETFOCUS,0,0);
::PostMessage(m_listKcpd->GetSafeHwnd(),SETNEXTITEMPHFOCUS,0,0);
return ;
}
try{
m_runsql.m_recordset->Close();
LRunSql::BeginTrans();
}
catch(_com_error e)
{
MessageBox(e.ErrorMessage());
}
for(i=n-1;i>=0;i--)
{
cangku=this->m_listKcpd->GetItemText(i,0);
yp_id=this->m_listKcpd->GetItemText(i,1);
yp_name=this->m_listKcpd->GetItemText(i,2);
l_sl=atoi(this->m_listKcpd->GetItemText(i,3));
old_sl=atoi(m_listKcpd->m_strlistNo.GetAt(m_listKcpd->m_strlistNo.FindIndex(m_listKcpd->m_iKcSelected[i])));
ying_kui=l_sl-old_sl;
//save dj;
sql.Format("INSERT INTO tabkcpddj(pd_ph,yp_id,ck_name,ying_kui) VALUES('%s','%s','%s',%d)"
,pd_ph,yp_id,cangku,ying_kui);
this->m_runsql.RunSQL(sql);
//save kc;
sql.Format("update tabkc set kc_number = %d where yp_id='%s' and ck_name = '%s'",l_sl,yp_id,cangku);
this->m_runsql.RunSQL(sql);
}
if(!LRunSql::CommitTrans())
{
MessageBox("数据库事务提交错误","医药管理系统");
}
else
MessageBox("OK","医药管理系统");
this->EndDialog(0);
}
CString CDlgKCPD::ChanShengPh()
{
// this->UpdateData();
CString sql;
_bstr_t sql_;
_variant_t value;
CString s_value;
CString s_date;
CString ph;
this->m_tcRq.GetWindowText(s_date);
this->m_tcRq.GetTime(m_tRq);
CString y_date,m_date,d_date;
y_date=this->m_tRq.Format("%Y");
m_date.Format("%d",this->m_tRq.GetMonth());
d_date.Format("%d",m_tRq.GetDay());
if(m_date.GetLength()==1)
m_date=CString("0")+m_date;
if(d_date.GetLength()==1)
d_date=CString("0")+d_date;
ph=y_date+"-"+m_date+"-"+d_date;
ph=ph+"pdd";
sql.Format("select pd_ph from tabkcpdph where rq='%s' order by pd_ph desc",s_date);
if(m_runsql.CheckSQLResult(sql))
{
value=m_runsql.m_recordset->GetCollect("pd_ph");
if(value.vt!=NULL)
{
s_value=(char*)(_bstr_t)value;
s_value=s_value.Mid(s_value.GetLength()-4,4);
}
}
else
{
s_value="0";
}
long l_value=atoi(s_value)+1;
s_value.Format("%d",l_value);
for(int i=s_value.GetLength();i<4;i++)
{
s_value="0"+s_value;
}
ph=ph+s_value;
return ph;
}
void CDlgKCPD::OnMove(int x, int y)
{
CDialog::OnMove(x, y);
if(m_listKcpd!=NULL)
if(m_listKcpd->m_hWnd!=NULL)
::PostMessage(this->m_listKcpd->GetSafeHwnd(),MYMESSAGE_EDIT_MOVED,0,0);
}
bool CDlgKCPD::SetTheFocus()
{
HWND hwnd=::GetFocus();
int iID=::GetDlgCtrlID(hwnd);
switch(iID)
{
case IDC_DATETIMEPICKER1:
{
this->m_comboJsr.SetFocus();
return true;
}
case IDC_COMBO1:
{
this->m_listKcpd->m_iEditedIndex=-1;
::PostMessage(m_listKcpd->GetSafeHwnd(),WM_SETFOCUS,0,0);
::PostMessage(m_listKcpd->GetSafeHwnd(),SETNEXTITEMPHFOCUS,0,0);
return true;
}
case IDC_BUTTON1:
{
this->m_btnCancel.SetFocus();
return true;
}
case IDCANCEL:
{
//
this->m_tcRq.SetFocus();//mm_btnCancel.SetActiveWindow();
return true;
}
case IDC_BUTTON2:
{
this->m_btnOk.SetFocus();
return true;
}
}
return false;
}
BOOL CDlgKCPD::PreTranslateMessage(MSG* pMsg)
{
const HWND hwnd=(pMsg!=NULL)?pMsg->hwnd:NULL;
if(hwnd==NULL) goto a;
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==13)
{
if(hwnd==this->m_btnOk.GetSafeHwnd()||
hwnd==this->m_btnCancel.GetSafeHwnd()||
hwnd==this->m_btnDel.GetSafeHwnd())
::PostMessage(this->GetSafeHwnd(),WM_COMMAND,::GetDlgCtrlID(hwnd),(UINT)hwnd);
else
this->SetTheFocus();
}
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_TAB)
{
if(SetTheFocus())
pMsg->wParam=VK_CONTROL;
}
a:
return CDialog::PreTranslateMessage(pMsg);
}
//////////////////////////////////////////////////////////////////////
// CDrawKCPD Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDrawKCPD::CDrawKCPD(CDlgKCPD* dlg)
{
this->parent=dlg;
m_nColumns=4;
m_iHaveColumnsTitle=1;
m_nSmallTilte=2;
m_piCharsColumns=new int[m_nColumns];
m_piWidthColumns=new int[m_nColumns]; //每列宽度
this->m_pstrColumnTitle=new CString[this->m_nColumns];
m_pstrColumnTitle[0]=_T("仓库名称");
m_pstrColumnTitle[1]=_T("药品编号");
m_pstrColumnTitle[2]=_T("药品名称");
m_pstrColumnTitle[3]=_T("数量");
}
CDrawKCPD::~CDrawKCPD()
{
}
void CDrawKCPD::PrintDlg(CDC* pDC, CPrintInfo* pInfo)
{ m_pOldFont = (CFont*) (pDC->SelectObject(m_pGeneralFont));
CPoint ptLeftCurPos(pInfo->m_rectDraw.TopLeft());
CPoint ptRightCurPos(pInfo->m_rectDraw.right,pInfo->m_rectDraw.top);
ptLeftCurPos.Offset(this->m_iLeftMargin,2*this->m_iLineHeight);
ptRightCurPos.Offset(-this->m_iRightMargin,2*this->m_iLineHeight);
int iCurPage=pInfo->m_nCurPage;
if(iCurPage==pInfo->GetMinPage())
{
ptLeftCurPos.Offset(0,this->m_iLineHeight*5/4);//开始写字的起始坐标
ptRightCurPos.Offset(0,this->m_iLineHeight/4);
CString str;
CSize size;
//左边的1行:
this->parent->m_comboJsr.GetWindowText(str);
pDC->TextOut(ptLeftCurPos.x,ptLeftCurPos.y,"经手人:");
pDC->TextOut(m_iLineHeight*4,ptLeftCurPos.y,str);
//右边的两行:
//票号:
this->parent->m_editPh.GetWindowText(str);
str="库存盘点票号: "+str;
size=pDC->GetTextExtent(str);
pDC->TextOut(ptRightCurPos.x-size.cx,ptRightCurPos.y,str);
//日期:
ptRightCurPos.Offset(0,m_iLineHeight);
parent->m_tcRq.GetWindowText(str);
str="日期: "+str;
pDC->TextOut(ptRightCurPos.x-size.cx,ptRightCurPos.y,str);
ptLeftCurPos.Offset(0,m_iLineHeight*3/4);
ptRightCurPos.Offset(0,m_iLineHeight*3/4);
}
int n=this->parent->m_listKcpd->GetItemCount();
if(n==0) return ;
this->DrawListItems(pDC,iCurPage,ptLeftCurPos,ptRightCurPos,parent->m_listKcpd);
pDC->SelectObject(m_pOldFont);
}
void CDrawKCPD::PrintPageHeader(CDC* pDC, CPrintInfo* pInfo)
{
CDrawDlg::PrintPageHeader(pDC,pInfo,"库存盘点");
}
void CDlgKCPD::OnButtonPrint()
{
for(int i=this->m_listKcpd->GetItemCount()-1;i>=0;i--)
if(m_listKcpd->GetItemText(i,0)==""&&
m_listKcpd->GetItemText(i,1)==""&&
m_listKcpd->GetItemText(i,2)=="")
{
m_listKcpd->DeleteItem(i);
}
if(!::OpenPrintFrame(this,m_draw))
{
MessageBox("打开打印框架错误","错误!");
}
if(m_listKcpd->GetItemCount()==0)
m_listKcpd->InsertItem(0,"");
}
void CDlgKCPD::OnCancel()
{
if(MessageBox("确定库存盘点登记模块?","注意",MB_YESNO)==IDYES)
{
if(MessageBox("是否保存?","注意",MB_YESNO)==IDNO)
{
CDialog::OnCancel();
}
else
this->OnButtonOk();
}
return;
}
BOOL CDlgKCPD::DestroyWindow()
{
delete this->m_listKcpd;
m_listKcpd=NULL;
delete m_draw;
m_draw=NULL;
return CDialog::DestroyWindow();
}
CListCtrl* CDrawKCPD::GetListCtrl()
{
return this->parent->m_listKcpd;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -