📄 dlgproductquery.cpp
字号:
{
iStart = 0;
nTop = 25*yPix; //第一页最上线
for(int iTotalPages = 1; iTotalPages<=nMaxPage; iTotalPages++)
{
int nCurPage = iTotalPages;
csRFinality.Format("第 %i 页/共 %i 页", nCurPage, nMaxPage);
time=CTime::GetCurrentTime();
csLFinality = time.Format("报表日期:%Y-%m-%d");
if(nCurPage != 1)
nTop = 25*yPix-fAdd; //非第一页最上线
if(nCurPage == 2)
iStart = A4_ONELINE;
if(nCurPage>2)
iStart = A4_ONELINE+(nCurPage - 2)*A4_OTHERLINE;
//开始页
if(memDC.StartPage() < 0)
{
::MessageBox(hWnd, _T("打印失败!"), "错误", MB_ICONSTOP);
memDC.AbortDoc();
return;
}
else
{
//打印
//标题
oldfont = memDC.SelectObject(&TitleFont);
int nItem = A4_OTHERLINE;
if(nCurPage == 1)
{
nItem = A4_ONELINE;
rc.SetRect(0,(int)(yPix*10),(int)(A4_W*xPix),(int)(yPix*20));
memDC.DrawText(szTitle, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}
//细节
memDC.SelectObject(&DetailFont);
rc.SetRect((int)(nLeft),(int)(nTop),(int)(nRight),(int)(nTop+fAdd));
//上横线
memDC.MoveTo(rc.left, rc.top);
memDC.LineTo(rc.right, rc.top);
rt1.SetRect((int)(nLeft),(int)(nTop),(int)(nLeft+14*xPix),(int)(rc.bottom)); //商品编码
rt2.SetRect((int)(rt1.right),(int)(rt1.top),(int)(rt1.right+20*xPix),(int)(rt1.bottom)); //商品名称
rt3.SetRect((int)(rt2.right),(int)(rt1.top),(int)(rt2.right+30*xPix),(int)(rt1.bottom)); //商品规格
rt4.SetRect((int)(rt3.right),(int)(rt1.top),(int)(rt3.right+15*xPix),(int)(rt1.bottom)); //商品颜色
rt5.SetRect((int)(rt4.right),(int)(rt1.top),(int)(rt4.right+25*xPix),(int)(rt1.bottom)); //商品价格(RMB)
rt6.SetRect((int)(rt5.right),(int)(rt1.top),(int)(rt5.right+20*xPix),(int)(rt1.bottom)); //商品重量(KG)
rt7.SetRect((int)(rt6.right),(int)(rt1.top),(int)(rt6.right+15*xPix),(int)(rt1.bottom)); //计量单位
rt8.SetRect((int)(rt7.right),(int)(rt1.top),(int)(rt7.right+40*xPix),(int)(rt1.bottom)); //供应商名称
rt9.SetRect((int)(rt8.right),(int)(rt1.top),(int)(rc.right), (int)(rt1.bottom)); //库存数量
memDC.DrawText("编码", &rt1, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("名称", &rt2, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("规格", &rt3, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("颜色", &rt4, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("价格(RMB)", &rt5, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("重量(KG)", &rt6, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("单位", &rt7, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("供货商", &rt8, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("数量", &rt9, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.MoveTo(rt1.right, rt1.top);
memDC.LineTo(rt1.right, rt1.bottom);
memDC.MoveTo(rt2.right, rt1.top);
memDC.LineTo(rt2.right, rt1.bottom);
memDC.MoveTo(rt3.right, rt1.top);
memDC.LineTo(rt3.right, rt1.bottom);
memDC.MoveTo(rt4.right, rt1.top);
memDC.LineTo(rt4.right, rt1.bottom);
memDC.MoveTo(rt5.right, rt1.top);
memDC.LineTo(rt5.right, rt1.bottom);
memDC.MoveTo(rt6.right, rt1.top);
memDC.LineTo(rt6.right, rt1.bottom);
memDC.MoveTo(rt7.right, rt1.top);
memDC.LineTo(rt7.right, rt1.bottom);
memDC.MoveTo(rt8.right, rt1.top);
memDC.LineTo(rt8.right, rt1.bottom);
memDC.MoveTo(rc.left, rt1.bottom);
memDC.LineTo(rc.right, rt1.bottom);
TCHAR szID[32]={0},szName[50]={0},szSpec[50]={0},szColor[50]={0},szPrice[10]={0},szWeight[4]={0},szUnit[6]={0},szSupplier[50]={0},szNum[4]={0};
rc.SetRect((int)(nLeft),(int)(nTop+fAdd),(int)(nRight),(int)(nTop+2*fAdd));
rt1.SetRect((int)(nLeft+nTextAdd), (int)(rc.top),(int)(nLeft+14*xPix),(int)(rc.bottom)); //编号
rt2.SetRect((int)(rt1.right+nTextAdd),(int)(rt1.top),(int)(rt1.right+20*xPix),(int)(rt1.bottom)); //名称
rt3.SetRect((int)(rt2.right+nTextAdd),(int)(rt1.top),(int)(rt2.right+30*xPix),(int)(rt1.bottom)); //规格
rt4.SetRect((int)(rt3.right+nTextAdd),(int)(rt1.top),(int)(rt3.right+15*xPix),(int)(rt1.bottom)); //颜色
rt5.SetRect((int)(rt4.right+nTextAdd),(int)(rt1.top),(int)(rt4.right+25*xPix),(int)(rt1.bottom)); //价格
rt6.SetRect((int)(rt5.right+nTextAdd),(int)(rt1.top),(int)(rt5.right+20*xPix),(int)(rt1.bottom)); //重量
rt7.SetRect((int)(rt6.right+nTextAdd),(int)(rt1.top),(int)(rt6.right+15*xPix),(int)(rt1.bottom)); //单位
rt8.SetRect((int)(rt7.right+nTextAdd),(int)(rt1.top),(int)(rt7.right+40*xPix),(int)(rt1.bottom)); //供应商
rt9.SetRect((int)(rt8.right+nTextAdd),(int)(rt1.top),(int)(rc.right),(int)(rt1.bottom)); //数量
int nCountItem = ListView_GetItemCount(hList);
for(int i=0;i<nItem; i++)
{
ListView_GetItemText(hList, i+iStart, 0, szID, 32);
ListView_GetItemText(hList, i+iStart, 1, szName, 50);
ListView_GetItemText(hList, i+iStart, 2, szSpec, 50);
ListView_GetItemText(hList, i+iStart, 3, szColor,50);
ListView_GetItemText(hList, i+iStart, 4, szPrice,10);
ListView_GetItemText(hList, i+iStart, 5, szWeight,4);
ListView_GetItemText(hList, i+iStart, 6, szUnit,6);
ListView_GetItemText(hList, i+iStart, 7, szSupplier,50);
ListView_GetItemText(hList, i+iStart, 8, szNum,4);
memDC.DrawText(szID, &rt1, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szName, &rt2, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szSpec, &rt3, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szColor, &rt4, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szPrice, &rt5, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szWeight, &rt6, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szUnit, &rt7, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szSupplier, &rt8, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szNum, &rt9, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
//下横线
memDC.MoveTo(rc.left, rc.bottom);
memDC.LineTo(rc.right, rc.bottom);
memDC.MoveTo(rt1.right, rt1.top);
memDC.LineTo(rt1.right, rt1.bottom);
memDC.MoveTo(rt2.right, rt1.top);
memDC.LineTo(rt2.right, rt1.bottom);
memDC.MoveTo(rt3.right, rt1.top);
memDC.LineTo(rt3.right, rt1.bottom);
memDC.MoveTo(rt4.right, rt1.top);
memDC.LineTo(rt4.right, rt1.bottom);
memDC.MoveTo(rt5.right, rt1.top);
memDC.LineTo(rt5.right, rt1.bottom);
memDC.MoveTo(rt6.right, rt1.top);
memDC.LineTo(rt6.right, rt1.bottom);
memDC.MoveTo(rt7.right, rt1.top);
memDC.LineTo(rt7.right, rt1.bottom);
memDC.MoveTo(rt8.right, rt1.top);
memDC.LineTo(rt8.right, rt1.bottom);
memDC.MoveTo(rc.left, rt1.bottom);
memDC.LineTo(rc.right, rt1.bottom);
rc.top += (int)(fAdd);
rc.bottom += (int)(fAdd);
rt1.top = rc.top;
rt1.bottom = rc.bottom;
rt2.top = rt1.top;
rt2.bottom = rt1.bottom;
rt3.top = rt1.top;
rt3.bottom = rt1.bottom;
rt4.top = rt1.top;
rt4.bottom = rt1.bottom;
rt5.top = rt1.top;
rt5.bottom = rt1.bottom;
rt6.top = rt1.top;
rt6.bottom = rt1.bottom;
rt7.top = rt1.top;
rt7.bottom = rt1.bottom;
rt8.top = rt1.top;
rt8.bottom = rt1.bottom;
rt9.top = rt1.top;
rt9.bottom = rt1.bottom;
if((i+iStart+1)>=nCountItem)
break;
}
//结尾
memDC.MoveTo(rc.left,(int)(nTop));
memDC.LineTo(rc.left,rc.top);
memDC.MoveTo(rc.right,(int)(nTop));
memDC.LineTo(rc.right,rc.top);
memDC.DrawText(csLFinality, &rc, DT_LEFT| DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(csRFinality, &rc, DT_RIGHT| DT_VCENTER | DT_SINGLELINE);
memDC.EndPage();
memDC.SelectObject(oldfont);
}
}
memDC.EndDoc();
}
}
else
{
//打印预览
//边框线
hPenOld = memDC.SelectObject(&cPen);
rc.SetRect(0, 0, (int)(A4_W*xPix), (int)(A4_H*yPix));
memDC.Rectangle(&rc);
memDC.SelectObject(hPenOld);
//标题
oldfont = memDC.SelectObject(&TitleFont);
int nItem = A4_OTHERLINE;
if(nCurPage == 1)
{
nItem = A4_ONELINE;
rc.SetRect(0,(int)( yPix*10), (int)(A4_W*xPix), (int)(yPix*20));
memDC.DrawText(szTitle, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}
//细节
memDC.SelectObject(&DetailFont);
rc.SetRect((int)(nLeft), (int)(nTop), (int)(nRight), (int)(nTop+fAdd));
//上横线
memDC.MoveTo(rc.left, rc.top);
memDC.LineTo(rc.right, rc.top);
rt1.SetRect((int)(nLeft), (int)(nTop), (int)(nLeft+14*xPix), (int)(nTop+fAdd)); //商品编码
rt2.SetRect((int)(rt1.right), (int)(rt1.top), (int)(rt1.right + 20*xPix), (int)(rt1.bottom)); //商品名称
rt3.SetRect((int)(rt2.right), (int)(rt1.top), (int)(rt2.right + 30*xPix), (int)(rt1.bottom)); //商品规格
rt4.SetRect((int)(rt3.right), (int)(rt1.top), (int)(rt3.right + 15*xPix), (int)(rt1.bottom)); //商品颜色
rt5.SetRect((int)(rt4.right), (int)(rt1.top), (int)(rt4.right + 25*xPix), (int)(rt1.bottom)); //商品价格
rt6.SetRect((int)(rt5.right), (int)(rt1.top), (int)(rt5.right + 20*xPix), (int)(rt1.bottom)); //商品重量
rt7.SetRect((int)(rt6.right), (int)(rt1.top), (int)(rt6.right + 15*xPix), (int)(rt1.bottom)); //计量单位
rt8.SetRect((int)(rt7.right), (int)(rt1.top), (int)(rt7.right + 40*xPix), (int)(rt1.bottom)); //供应商名称
rt9.SetRect((int)(rt8.right), (int)(rt1.top), (int)(rc.right),(int)(rt1.bottom)); //库存数量
memDC.DrawText("编码", &rt1, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("名称", &rt2, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("规格", &rt3, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("颜色", &rt4, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("价格(RMB)", &rt5, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("重量(KG)", &rt6, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("单位", &rt7, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("供货商", &rt8, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText("数量", &rt9, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.MoveTo(rt1.right, rt1.top);
memDC.LineTo(rt1.right, rt1.bottom);
memDC.MoveTo(rt2.right, rt1.top);
memDC.LineTo(rt2.right, rt1.bottom);
memDC.MoveTo(rt3.right, rt1.top);
memDC.LineTo(rt3.right, rt1.bottom);
memDC.MoveTo(rt4.right, rt1.top);
memDC.LineTo(rt4.right, rt1.bottom);
memDC.MoveTo(rt5.right, rt1.top);
memDC.LineTo(rt5.right, rt1.bottom);
memDC.MoveTo(rt6.right, rt1.top);
memDC.LineTo(rt6.right, rt1.bottom);
memDC.MoveTo(rt7.right, rt1.top);
memDC.LineTo(rt7.right, rt1.bottom);
memDC.MoveTo(rt8.right, rt1.top);
memDC.LineTo(rt8.right, rt1.bottom);
memDC.MoveTo(rc.left, rt1.bottom);
memDC.LineTo(rc.right, rt1.bottom);
TCHAR szID[32]={0},szName[50]={0},szSpec[50]={0},szColor[50]={0},szPrice[10]={0},szWeight[4]={0},szUnit[6]={0},szSupplier[50]={0},szNum[4]={0};
rc.SetRect((int)(nLeft), (int)(nTop+fAdd), (int)(nRight), (int)(nTop+2*fAdd));
rt1.SetRect((int)(nLeft+nTextAdd),(int)(rc.top),(int)(nLeft+14*xPix),(int)(rc.bottom)); //编号
rt2.SetRect((int)(rt1.right+nTextAdd), (int)(rt1.top), (int)(rt1.right + 20*xPix), (int)(rt1.bottom)); //名称
rt3.SetRect((int)(rt2.right+nTextAdd), (int)(rt1.top), (int)(rt2.right + 30*xPix), (int)(rt1.bottom)); //规格
rt4.SetRect((int)(rt3.right+nTextAdd), (int)(rt1.top), (int)(rt3.right + 15*xPix), (int)(rt1.bottom)); //颜色
rt5.SetRect((int)(rt4.right+nTextAdd), (int)(rt1.top), (int)(rt4.right + 25*xPix), (int)(rt1.bottom)); //价格
rt6.SetRect((int)(rt5.right+nTextAdd), (int)(rt1.top), (int)(rt5.right + 20*xPix), (int)(rt1.bottom)); //重量
rt7.SetRect((int)(rt6.right+nTextAdd), (int)(rt1.top), (int)(rt6.right + 15*xPix), (int)(rt1.bottom)); //单位
rt8.SetRect((int)(rt7.right+nTextAdd), (int)(rt1.top), (int)(rt7.right + 40*xPix), (int)(rt1.bottom)); //供应商
rt9.SetRect((int)(rt8.right+nTextAdd),(int)(rt1.top),(int)(rc.right),(int)(rt1.bottom)); //数量
int nCountItem = ListView_GetItemCount(hList);
for(int i=0;i<nItem; i++)
{
ListView_GetItemText(hList, i+iStart, 0, szID, 32);
ListView_GetItemText(hList, i+iStart, 1, szName, 50);
ListView_GetItemText(hList, i+iStart, 2, szSpec, 50);
ListView_GetItemText(hList, i+iStart, 3, szColor,50);
ListView_GetItemText(hList, i+iStart, 4, szPrice,10);
ListView_GetItemText(hList, i+iStart, 5, szWeight,4);
ListView_GetItemText(hList, i+iStart, 6, szUnit,6);
ListView_GetItemText(hList, i+iStart, 7, szSupplier,50);
ListView_GetItemText(hList, i+iStart, 8, szNum,4);
memDC.DrawText(szID, &rt1, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szName, &rt2, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szSpec, &rt3, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szColor, &rt4, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szPrice, &rt5, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szWeight, &rt6, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szUnit, &rt7, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szSupplier, &rt8, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(szNum, &rt9, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
//下横线
memDC.MoveTo(rc.left, rc.bottom);
memDC.LineTo(rc.right, rc.bottom);
memDC.MoveTo(rt1.right, rt1.top);
memDC.LineTo(rt1.right, rt1.bottom);
memDC.MoveTo(rt2.right, rt1.top);
memDC.LineTo(rt2.right, rt1.bottom);
memDC.MoveTo(rt3.right, rt1.top);
memDC.LineTo(rt3.right, rt1.bottom);
memDC.MoveTo(rt4.right, rt1.top);
memDC.LineTo(rt4.right, rt1.bottom);
memDC.MoveTo(rt5.right, rt1.top);
memDC.LineTo(rt5.right, rt1.bottom);
memDC.MoveTo(rt6.right, rt1.top);
memDC.LineTo(rt6.right, rt1.bottom);
memDC.MoveTo(rt7.right, rt1.top);
memDC.LineTo(rt7.right, rt1.bottom);
memDC.MoveTo(rt8.right, rt1.top);
memDC.LineTo(rt8.right, rt1.bottom);
memDC.MoveTo(rc.left, rt1.bottom);
memDC.LineTo(rc.right, rt1.bottom);
rc.top += (int)(fAdd);
rc.bottom += (int)(fAdd);
rt1.top = rc.top;
rt1.bottom = rc.bottom;
rt2.top = rt1.top;
rt2.bottom = rt1.bottom;
rt3.top = rt1.top;
rt3.bottom = rt1.bottom;
rt4.top = rt1.top;
rt4.bottom = rt1.bottom;
rt5.top = rt1.top;
rt5.bottom = rt1.bottom;
rt6.top = rt1.top;
rt6.bottom = rt1.bottom;
rt7.top = rt1.top;
rt7.bottom = rt1.bottom;
rt8.top = rt1.top;
rt8.bottom = rt1.bottom;
rt9.top = rt1.top;
rt9.bottom = rt1.bottom;
if((i+iStart+1)>=nCountItem)
break;
}
//结尾
memDC.MoveTo(rc.left, (int)(nTop));
memDC.LineTo(rc.left, rc.top);
memDC.MoveTo(rc.right, (int)(nTop));
memDC.LineTo(rc.right, rc.top);
memDC.DrawText(csLFinality, &rc, DT_LEFT| DT_VCENTER | DT_SINGLELINE);
memDC.DrawText(csRFinality, &rc, DT_RIGHT| DT_VCENTER | DT_SINGLELINE);
memDC.SelectObject(oldfont);
memDC.SelectObject(hPenOld);
}
TitleFont.DeleteObject();
DetailFont.DeleteObject();
cPen.DeleteObject();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -