MFC下 報表列印程式的實現

2021-09-30 04:15:45 字數 4617 閱讀 2148

vc 6.0下實現的 報表列印類 對資料制定列印位置 位置調整 列印預覽 以及批量列印

適用於 罰單、發票等批量列印要求

以下為程式**:

// reportprint.h: inte***ce for the reportprint class.

////

#if !defined(afx_reportprint_h__7a35ba1e_b178_4c1b_8970_5226028695db__included_)

#define afx_reportprint_h__7a35ba1e_b178_4c1b_8970_5226028695db__included_

#if _msc_ver > 1000

#pragma once

#endif // _msc_ver > 1000

#define  point_count 2

//列印資訊結構體

typedef struct tag_printinfo

printinfo;

class reportprint 

;#endif // !defined(afx_reportprint_h__7a35ba1e_b178_4c1b_8970_5226028695db__included_)

/// cdlgreportprintpreview dialog

class cdlgreportprintpreview : public cdialog

;ccombobox m_ctrlnodes;

int  m_ncurpage;

int  m_nposx;

int  m_nposy;

//}}afx_data

// overrides

// classwizard generated virtual function overrides

//}afx_virtual

// implementation

protected:

// generated message map functions

//}afx_msg

declare_message_map()

private:

void drawprintpreview(cdc* pdc,crect* previewrect);

crect m_previewrect;  //列印預覽矩形 預設 297*210 

csize m_*****size;

printinfo* m_pprintinfo;

int m_nmaxpage;    //最大頁

double m_nrato;    //預覽縮放比率

cpoint* m_pprintpoint; //列印座標陣列

int m_nprintcount;

reportprint* m_pparent;

cstring m_csheight;

cstring m_csfacename;

};// reportprint.cpp: implementation of the reportprint class.

////

#include "stdafx.h"

#include "myprint.h"

#include "reportprint.h"

#include

#ifdef _debug

#undef this_file

static char this_file=__file__;

#define new debug_new

#endif

//// construction/destruction

//reportprint::reportprint()

reportprint::~reportprint()

//設定列印字型 預設 宋體15號

void reportprint::settextfont(char* height,char* facename)

//設定列印紙張的大小

void reportprint::set*****size(csize *****size)

//設定列印紙張的大小  過載

void reportprint::set*****size(int x, int y)

//設定列印資料 同時設定批量列印的數量

void reportprint::setprintinfo(printinfo printinfo, int size)

//列印

void reportprint::print(bool bdirect)

}//列印預覽

void reportprint::printpreview()

/// cdlgreportprintpreview dialog

cdlgreportprintpreview::cdlgreportprintpreview(cwnd* pparent /*=null*/)

: cdialog(cdlgreportprintpreview::idd, pparent)

}afx_data_init

}cdlgreportprintpreview::cdlgreportprintpreview(cstring& csheight,cstring& csfacename, csize *****size, printinfo printinfo, int nmaxpage, cpoint* pprintpoint, int nprintcount,reportprint* parent )

: cdialog(cdlgreportprintpreview::idd, null)

void cdlgreportprintpreview::dodataexchange(cdataexchange* pdx)

}afx_data_map

}begin_message_map(cdlgreportprintpreview, cdialog)

//}afx_msg_map

end_message_map()

/// cdlgreportprintpreview message handlers

bool cdlgreportprintpreview::oninitdialog()

m_ctrlnodes.selectstring(i,str);

m_ctrlnodes.setcursel(0);

m_nposx = m_pprintpoint[0].x;

m_nposy = m_pprintpoint[0].y;

cstring csposx;

csposx.format("%d",m_nposx);

cstring csposy;

csposy.format("%d",m_nposy);

setdlgitemtext(idc_edit_x,csposx);

setdlgitemtext(idc_edit_y,csposy);

updatedata(true);

if (m_beditmode == false)

return true;  // return true unless you set the focus to a control

// exception: ocx property pages should return false

}void cdlgreportprintpreview::onpaint()

void cdlgreportprintpreview::drawprintpreview(cdc *pdc, crect *previewrect)

font.deleteobject();

pen.deleteobject ();

}void cdlgreportprintpreview::onbnpre()

else

void cdlgreportprintpreview::onbnnext()

else

}void cdlgreportprintpreview::onok()

void cdlgreportprintpreview::onbnsetpos()

void cdlgreportprintpreview::onselchangecombonode()

m_nposx = m_pprintpoint[index].x;

m_nposy = m_pprintpoint[index].y;

cstring csposx;

csposx.format("%d",m_nposx);

cstring csposy;

csposy.format("%d",m_nposy);

setdlgitemtext(idc_edit_x,csposx);

setdlgitemtext(idc_edit_y,csposy);

updatedata(true);

} void cdlgreportprintpreview::onchangeeditx()

void cdlgreportprintpreview::onchangeedity()

列印預覽對話方塊

MFC 列印程式的編制

mfc 列印程式的編制 mfc 在實現列印程式設計工作時已經建立了乙個已有的框架,我們只要往這個框架裡面填東西即可。列印工作其實就是在 dc 上繪圖,不過這裡的 dc 是印表機的 dc 明確這一點之後,想當然的,我們列印的任務可以分為獲取印表機 dc 根據印表機驅動讓使用者互動設定列印引數 開始列印...

MFC實現列印功能

使用cprintdialog類的建構函式 cprintdialog bool bprintsetuponly,true for print setup,false for print dialog dword dwflags pd allpages pd usedevmodecopies pd no...

微軟自帶報表列印的實現

1 建立資料原始檔 uoorderds.xsd 只在資料來源中新增相應的列,不新增查詢語句,在程式中新增 為了方便條件查詢,所以在程式中新增 2 新增報表檔案 prtuporder.rdlc 然後給報表檔案指定資料集 就是上面的xsd檔案 3 也可給報表中的table新增引數 3 建立.aspx檔案...