表格的打印是报表打印设计中的一种常见形式,所以在对表格进行打印时,边线及字体的设置也是非常重要的。表格的绘制非常简单,只要循环表格的所有行和列来绘制表格的线条没再将表格中的文字绘制到相应的单元格中,即可完成对表格的绘制操作。对于线条的宽度与字体的选择就需要通过指定的设置来完成了
代码实现:
代码实现中,利用UpdateData函数更新数据,对于此函数,请看《UpdateData函数的断点调试深入理解》打印的基本知识请看《打印程序代码常用的函数或结构体粗讲》《打印表格基本实现-设置预览,字体,线宽1》中,实现了预览功能,下面,我们看看其他的功能,在主对话框类的头文件中:
CPreview dlg;
CListCtrl m_Grid;
CString m_edit;
记得引入头文件#include "Preview.h"
实现文件中:
void CPrintLineandFontDlg::OnPreview() //预览按钮
{
UpdateData();
dlg.LineWidth = atoi(m_edit);
dlg.DoModal();
}
void CPrintLineandFontDlg::OnSelectFont() //字体选择按钮
{
CFontDialog fontdlg;
if (fontdlg.DoModal() == IDOK)
{
fontdlg.GetCurrentFont(&dlg.logfont);
dlg.isfont = true;
}
}
void CPrintLineandFontDlg::OnPrint() //打印按钮
{
CPrintDialog pdlg(false);
pdlg.GetDefaults();
CDC dc;
dc.Attach(pdlg.GetPrinterDC());
dc.StartDoc("PrintGrid");
dlg.PreviewGrid(&dc,true);
dc.EndDoc();
}
在OnInitDialog函数中:
m_Grid.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_Grid.InsertColumn(0,"姓名",LVCFMT_LEFT,100);
m_Grid.InsertColumn(1,"性别",LVCFMT_LEFT,100);
m_Grid.InsertColumn(2,"年龄",LVCFMT_LEFT,100);
m_Grid.InsertColumn(3,"地址",LVCFMT_LEFT,100);
m_Grid.InsertItem(0,"张三");
m_Grid.SetItemText(0,1,"男");
m_Grid.SetItemText(0,2,"18");
m_Grid.SetItemText(0,3,"吉林");
m_Grid.InsertItem(1,"李四");
m_Grid.SetItemText(1,1,"男");
m_Grid.SetItemText(1,2,"25");
m_Grid.SetItemText(1,3,"长沙");
m_Grid.InsertItem(2,"王五");
m_Grid.SetItemText(2,1,"男");
m_Grid.SetItemText(2,2,"30");
m_Grid.SetItemText(2,3,"上海");
dlg.PrintGrid = &m_Grid;
dlg.isfont = false;
m_edit = "1";
UpdateData(false);