ÊÖ»úÕ¾
ÍøÍ¨·ÖÕ¾
µçÐÅÖ÷Õ¾
ÃÜ¡¡Âë:
Óû§Ãû£º
µ±Ç°Î»Öà : Ö÷Ò³>³ÌÐòÉè¼Æ>C/C++>Áбí

ÈçºÎ¿ìËÙ×Ô¶¯Éú³É²¢¶¨ÖƱ¨±í

À´Ô´£º»¥ÁªÍø ×÷Õߣºwest263.com ʱ¼ä£º2008-02-23
Î÷²¿ÊýÂë-È«¹úÐéÄâÖ÷»ú10Ç¿£¡40ÓàÏîÐéÄâÖ÷»ú¹ÜÀí¹¦ÄÜ,È«¹úÁìÏÈ!Ë«Ïß¶àÏßÐéÄâÖ÷»úÄϱ±·ÃÎʳ©Í¨ÎÞ×è!Ãâ·ÑÔùËÍÆóÒµÓʾÖ,.CNÓòÃû,×ÔÖú½¨Õ¾480ÔªÆð,Ãâ·ÑÊÔÓÃ7Ìì,ÂúÒâÔÙ¸¶¿î! P4Ö÷»ú×âÓÃ799Ôª/ÔÂ.Ô¸¶Ãâѹ½ð!
ÔÚ¸÷ÖÖ¹ÜÀíÐÅϢϵͳӦÓÃÖУ¬ÐèÒª²úÉú´óÁ¿µÄ±¨±í£¬Í¨³£µÄ×ö·¨ÊÇÓɱà³ÌÈËÔ±Ò»¸ö¸öÊÖ¹¤ÖÆ×÷£¬¹¤×÷ЧÂʽϵͣ»ÁíÍ⣬Óû§Ï£ÍûÄܹ»½«ÔÚÓ¦ÓóÌʽÀï²éѯµÃµ½µÄ½á¹ûÉú³É±¨±íÒÔ±ã´òÓ¡¡£ÎªÁ˽â¾öÒÔÉÏÁ½ÖÖÎÊÌ⣬±¾ÎÄÀûÓö¯Ì¬Éú³É¼¼ÊõʵÏÖÁË¿ìËÙ×Ô¶¯²úÉú±¨±í£¬ÔÊÐíÓû§ÊÖ¹¤¶Ô±¨±í½øÐÐÐÞÊΣ¬²¢½«ÊµÏÖ¹ý³Ì·â×°³ÉÒ»¸öÀà¡£
1£®Éè¼ÆË¼Â·
ʹÓùýC Builder»òDelphiµÄ±à³ÌÈËÔ±ÖªµÀ£¬ÓÐÒ»¸öTDBGrid¿Ø¼þ£¬ËûÄÜÒÔ±í¸ñµÄÐÎʽÏÔʾºÍ²Ù×÷Óû§²éѯµÄÊý¾Ý¼Ç¼£»¶øÒªÖÆ×÷Ò»¸ö¿É¹©´òÓ¡µÄ±¨±í£¬ÔòÐèҪʹÓÃTQuickRep¿Ø¼þ£¬ÔÚËûÉÏÃæÔö¼ÓTQRLabel¡¢TQRDBText¡¢TQRShapeµÈ¿Ø¼þ£¬ÅäÖÃËûÃǶÔÓ¦µÄÊý¾Ý¼¯¡¢Êý¾Ý×ֶεÈÊôÐÔ£¬È»ºó±àÅÅËûÃǵÄλÖã¬ÒÔ±í¸ñ»òÆäËû¸ñʽÏÔʾ³öÀ´¹©Ô¤ÀÀºÍ´òÓ¡£¬ÕâÊǸöºÜ·±ËöµÄ¹ý³Ì¡£ÓÐʱ£¬Óû§Ï£ÍûÄܽ«²éѯ³öÀ´µÄÏÔʾÔÚTDBGrid¿Ø¼þµÄÊý¾Ý´òÓ¡³öÀ´£¬°´ÕÕÒÔÍùµÄ×ö·¨£¬¾ÍÐèÒªÓɱà³ÌÈËÔ±°´ÕÕTDBGridµÄÏÔʾÄÚÈÝÊÖ¹¤Éè¼Æ±¨±í¡£ÔÚÕâÀ±¾ÎÄÀûÓö¯Ì¬Éú³É¼¼Êõ£¬¶Á³öTDBGridµÄÓйØÏÔʾÐÅÏ¢£¬ÔÚTQuickRep¿Ø¼þÀﶯ̬Éú³ÉÏàÓ¦µÄTQRLabel¡¢TQRDBText¡¢TQRShapeµÈ¿Ø¼þ£¬ÅäÖø÷×ֶεıêÌâºÍÊý¾ÝÁ¬Í¬±í¸ñ·Ö¸îÌõ¡£ÕâÊÇÍêÈ«¿ÉÐеģ¬ÒòΪÔÚC BuilderÀïÈκεĿؼþ¶¼Äܹ»ÓɳÌʽ¶¯Ì¬Éú³É£¬²»µ«½öÊÇÔÚÉè¼Æ½×¶Î²Å²úÉúµÄ¡£ÁíÍ⣬¼ÙÈçÓû§¶Ô²úÉúµÄ±¨±í±í¸ñ²¼¾Ö²»Ì«ÂúÒ⣬±¾ÎÄÌṩÁ˽ӿÚʹÓû§¿É¶Ô±¨±í½øÐÐÊÖ¹¤µ÷Õû£¬µ÷Õû±í¸ñµÄ¸ß¶È¡¢¿í¶ÈµÈ²¼¾Ö£¬ÊµÏÖÓû§¶Ô±¨±íµÄÒ»¶¨³Ì¶ÈµÄ¶¨ÖÆ¡£
ÀûÓÃC µÄ·â×°ÐÔÌØµã£¬½«×Ô¶¯²úÉú²¢¶¨ÖƱ¨±íµÄʵÏÖ·â×°³ÉÒ»¸öÐÂÀàTGridPrint£¬¶ÔÍâÌṩ±à³ÌÈËÔ±¹ØÐĵĹ«Óýӿڣ¬ÆÁ±ÎÁËÄÚ²¿ÐÅÏ¢ºÍ¾ßÌåʵÏÖ£¬ÌåÏÖÁËÃæÏò¶ÔÏóµÄÉè¼ÆË¼Ï룬Ϊ±à³ÌÈËÔ±´øÀ´·½±ã¡£±à³ÌÈËÔ±»¹Äܹ»ÔÚËû»ù´¡ÉϽøÒ»²½À©³ä¹¦ÄÜ¡£ÕâÑùÉè¼ÆµÄÐÂÀà¼õÇáÁ˱à³ÌÈËÔ±µÄ¹¤×÷Á¿£¬Í¬Ê±ÎªÓû§ÌṩÁ˶¨ÖƱ¨±íµÄ½Ó¿Ú£¬Ìá¸ßÁ˱¨±íµÄÖÊÁ¿ºÍÓû§²ÎºÍµÄ»ý¼«ÐÔ¡£
2£®ÊµÏÖ¹ý³Ì
×Ô¶¯²úÉú²¢¶¨ÖƱ¨±íµÄʵÏÖ¹ý³Ì°üÀ¨×Ô¶¯²úÉúºÍ¶¨ÖÆÁ½²¿·Ö¡£ÐÂÀàµÄ¶¨ÒåºÍʵÏÖ·Ö±ðÔÚGridPrint.h GridPrint.cppÎĵµÀÁí°üº¬3¸öÎĵµRepRst.h¡¢RepRst.cpp¡¢RepRst.dfm£¬ËûÃÇÊÇÒѲúÉúµÄÒ»¸ö´°¿ÚFrmRepRst£¬ÔÚËûÀïÃæÒÑÔö¼ÓÒ»¸öTQuickRep¿Ø¼þ£¬ËûµÄÊôÐÔBandsµÄ¸÷×ÓÊôÐÔµÄֵȫΪtrue¡£
2.1 ×Ô¶¯²úÉú±¨±í
Ïȶ¨ÒåÒ»¸ö±íʾ±í¸ñijһÁÐÐÅÏ¢µÄ½á¹¹£¬ÔÚ±¨±íÀïÒ»ÁÐÓй̶¨±êÌâºÍÏÔʾµÄÊý¾ÝÎı¾Á½ÖÖÐÅÏ¢£¬ÎªÁËÄÜ»­³ö±í¸ñ£¬Ã¿Ò»Áй̶¨±êÌâÀ¸ºÍÊý¾ÝÀ¸Óұ߷ֱðÔö¼ÓÒ»¸ö·Ö¸ôÌõ¡£ÔÚÀàTGridPrintµÄ¹¹Ô캯ÊýÀÏȸù¾Ý´«ÈëµÄTQuickRep *pSrcQuickRep£¨±¨±íÖ¸Õ룩,TDBGrid * pSrcDBGrid£¨Êý¾Ý±í¸ñÖ¸Õ룩,TQRBand *SrcTitleBand1£¨±¨±íÖеÄ×ܱêÌâÀ¸Ö¸Õ룩, TQRBand *SrcColumnHeaderBand1£¨±¨±íÖеÄ×ֶαêÌâÀ¸Ö¸Õ룩,TQRBand * SrcDetailBand1£¨±¨±íÖеÄÊý¾ÝÀ¸Ö¸Õ룩²ÎÊýÅäÖÃÀàµÄ˽ÓбäÁ¿¡£ÔÙ¶¯Ì¬Éú³É²¢ÅäÖÃ×ܱêÌâÎı¾¡¢×ֶαêÌâÀ¸¾ØÐοò¡¢Êý¾ÝÀ¸¾ØÐοòµÄÊôÐÔ¡£È»ºóͨ¹ýÒ»¸öÑ­»·£¬¶Á³öTDBGridÖи÷×ֶεıêÌâºÍÊý¾ÝÐÅÏ¢£¬¶¯Ì¬Éú³É±¨±íÖи÷×ֶεıêÌâ±êÇ©¿Ø¼þ¡¢Êý¾ÝÎı¾¿Ø¼þÁ¬Í¬¶ÔÓ¦µÄ±í¸ñ·Ö¸îÊúÌõ¿Ø¼þ¡£ÔÚÀàµÄÎö¹¹º¯ÊýÀɾ³ýÈκÎÓɹ¹Ô캯Êý¶¯Ì¬Éú³ÉµÄ¶ÔÏó¡£ÀàµÄ´òÓ¡Ô¤ÀÀº¯ÊýʵÏÖ±¨±íµÄ´òÓ¡Ô¤ÀÀ¹¦ÄÜ¡£ÆäËûµÄº¯Êý˵Ã÷ÂÔ¡£
×Ô¶¯Éú³É±¨±íÀàµÄ¶¨Ò壨GridPrint.h£©
#include <DBGrids.hpp> //°üº¬µÄÏà¹ØÍ·Îĵµ
#include <Db.hpp>
#include <Printers.hpp>
#include <QuickRpt.hpp>
#include <Qrctrls.hpp>
typedef struct tagFieldType{ //±íʾ±í¸ñijһÁÐÐÅÏ¢µÄ½á¹¹
AnsiString sTitle; //×ֶαêÌâÃû³Æ
int iWidth; //±í¸ñµ¥ÔªµÄ¿í¶È
TQRLabel *pLabel; //×ֶαêÌâ¿Ø¼þ
TQRDBText *pDBText; //ÏÔʾµÄÊý¾Ý¿Ø¼þ
TQRShape *pShapeTitle, *pShapeData; //×ֶαêÌâºÍÊý¾ÝµÄ±í¸ñ·Ö¸ôÌõ
} NEWFIELDTYPE;
class TGridPrint{
public:
TGridPrint(TQuickRep *pSrcQuickRep,TDBGrid * pSrcDBGrid,TQRBand *SrcTitleBand1,
TQRBand *SrcColumnHeaderBand1,TQRBand * SrcDetailBand1); //¹¹Ô캯Êý
~TGridPrint(); //Îö¹¹º¯Êý
void DoPreview(); //±¨±íµÄ´òÓ¡Ô¤ÀÀ
void SetPrntTitle(AnsiString sTitle); //ÊÖ¹¤ÅäÖñí¸ñµÄ×ܱêÌâ
void SetColumnsWidth(int *ColumnsWidth); //ÊÖ¹¤ÅäÖñí¸ñ¸÷Áпí¶È
void SetHeadRectHeight(int iHeight); //ÊÖ¹¤ÅäÖÃ×ֶαêÌâÐеĸ߶È
void SetDetailRectHeight(int iHeight); //ÊÖ¹¤ÅäÖÃÊý¾ÝÐеĸ߶È
private:
TDBGrid * pDBGrid; //½«ÒªÏÔʾµÄDBGrid
TDataSet * pDataSet; //DBGrid¶ÔÓ¦Êý¾Ý¼¯
TQuickRep * pQuickRep; //±¨±í¿Ø¼þ
TQRBand * TitleBand1; //±¨±íµÄ×ܱêÌâÀ¸
TQRBand * ColumnHeaderBand1; //±¨±íµÄ×ֶαêÌâÀ¸
TQRBand * DetailBand1; //±¨±íµÄÊý¾ÝÀ¸
TQRLabel * pTitleLabel; //×ܱêÌâ¿Ø¼þ
TQRShape * pHeadRect, * pDetailRect; //Õû¸ö×ֶαêÌâÀ¸¡¢Êý¾ÝÀ¸µÄ±í¸ñ¾ØÐοؼþ
int iHeadRectHeight, iDetailRectHeight; //¶ÔÓ¦±í¸ñ¾ØÐοòµÄ¸ß¶È£¬ËûÃÇ¿í¶ÈÏàͬ
int _iTotalWidth; //Õû¸ö±í¸ñµÄ×Ü¿í¶È
int _iIntClearance; //±í¸ñÄÚ²¿Êý¾ÝÁе½×ó±í¸ñµÄ¾àÀë
int _iFieldCount; //½«Òª´òÓ¡µÄ×Ö¶ÎÊýÄ¿
NEWFIELDTYPE _arrayFieldType[40]; //Ö§³Öµ½40¸ö×ֶεĴòÓ¡
void AutoAdjustColumnsWidth(); //³Ìʽ×Ô¶¯µ÷Õû¸÷Áпí¶È
};
ÀàµÄÖ÷Òª¹«Ó÷½·¨µÄʵÏÖ£¨GridPrint.cpp£©
TGridPrint::TGridPrint(TQuickRep * pSrcQuickRep,TDBGrid * pSrcDBGrid,TQRBand *SrcTitleBand1, TQRBand *SrcColumnHeaderBand1,TQRBand * SrcDetailBand1) //¹¹Ô캯Êý
{ int i,PreLeft;
pQuickRep = pSrcQuickRep; //¸ù¾Ý´«Èë²ÎÊýÅäÖÃ˽ÓбäÁ¿
pDBGrid = pSrcDBGrid;
pDataSet = pDBGrid->DataSource->DataSet;
pQuickRep->DataSet = pDataSet;
TitleBand1 = SrcTitleBand1;
ColumnHeaderBand1 = SrcColumnHeaderBand1;
DetailBand1= SrcDetailBand1;
PTitleLabel = new TQRLabel(pQuickRep); //Éú³É²¢ÅäÖÃ×ܱêÌâ±êÇ©µÄÊôÐÔ
pTitleLabel->Parent = TitleBand1;
pTitleLabel->Caption = "±¨±í±êÌâ";
pTitleLabel->Left= (TitleBand1->Width - pTitleLabel->Width)/2;
memset(_arrayFieldType,0,sizeof(NEWFIELDTYPE)*40);
_iTotalWidth=0; //¼ÆËã³ö±í¸ñ¸÷Áе¥Ôª¿í¶ÈºÍÕû¸ö±í¸ñµÄ×Ü¿í¶È

ÎÄÕÂÕûÀí£ºÎ÷²¿ÊýÂë--רҵÌṩÓòÃû×¢²á¡¢ÐéÄâÖ÷»ú·þÎñ
http://www.west263.com
ÒÔÉÏÐÅÏ¢ÓëÎÄÕÂÕýÎÄÊDz»¿É·Ö¸îµÄÒ»²¿·Ö,Èç¹ûÄúÒª×ªÔØ±¾ÎÄÕÂ,Çë±£ÁôÒÔÉÏÐÅÏ¢£¬Ð»Ð»!