说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

怎么样才能调用PrintDialog组件打印,如要打印Memo组件中的文字。

编辑:说三道四文库 发布时间:2017-02-26 08:40
HTML文档下载 WORD文档下载 PDF文档下载
这里是打印代码,不错的哦:
void __fastcall TMainForm::Print1Click(TObject *Sender)
{
  Screen->Cursor = crHourGlass;
  Application->ProcessMessages();

  TList* pageList = new TList;
  int width = GetDeviceCaps(Printer()->Handle, PHYSICALWIDTH);
  int height = GetDeviceCaps(Printer()->Handle, PHYSICALHEIGHT);
  int logPixelsX = GetDeviceCaps(Printer()->Handle, LOGPIXELSX);
  int logPixelsY = GetDeviceCaps(Printer()->Handle, LOGPIXELSY);
  int xOffset = GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETX);
  int yOffset = GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETY);

  SendMessage(RichEdit->Handle, EM_FORMATRANGE, 0, 0);
  FORMATRANGE fr;
  memset(&fr, 0, sizeof(fr));
  fr.hdc = Printer()->Handle;
  fr.hdcTarget = Printer()->Handle;
  SetMapMode(fr.hdc, MM_TEXT);

  TRect pageRect;
  pageRect.left = 0;
  pageRect.top = 0;
  pageRect.right = MulDiv(width - xOffset, 1440, logPixelsX);
  pageRect.bottom = MulDiv(height - yOffset, 1440, logPixelsY);

  TRect rendRect;
  rendRect.left = pageRect.left + (Margins->Left * 1440) - xOffset;
  rendRect.top = pageRect.top + (Margins->Top * 1440) - yOffset;
  rendRect.right = pageRect.right - (Margins->Right * 1440);
  rendRect.bottom = pageRect.bottom - (Margins->Bottom * 1440);

  fr.chrg.cpMin = 0;
  fr.chrg.cpMax = -1;
  int textLen = RichEdit->Text.Length();
  do {
    fr.rc = rendRect;
    fr.rcPage = pageRect;
    TPrinterPage* page = new TPrinterPage;
    page->StartPos = fr.chrg.cpMin;
    fr.chrg.cpMin = SendMessage(
      RichEdit->Handle, EM_FORMATRANGE, false, (int)&fr);
    page->EndPos = fr.chrg.cpMin - 1;
    pageList->Add(page);
  } while (fr.chrg.cpMin != -1 && fr.chrg.cpMin < textLen);

  SendMessage(RichEdit->Handle, EM_FORMATRANGE, 0, 0);

  PrintDialog->MaxPage = pageList->Count;
  if (!PrintDialog->Execute()) {
    Screen->Cursor = crDefault;
    return;
  }
  Printer()->Title = "Rich Edit Printing Example " +
    ExtractFileName(OpenDialog->FileName);
  int startPage, endPage;
  if (PrintDialog->PrintRange == prPageNums) {
    startPage = PrintDialog->FromPage - 1;
    endPage = PrintDialog->ToPage - 1;
  }
  else {
    startPage = 0;
    endPage = pageList->Count - 1;
  }

  Screen->Cursor = crHourGlass;
  Application->ProcessMessages();

  textLen = RichEdit->Text.Length();
  Printer()->BeginDoc();
  SetMapMode(Printer()->Handle, MM_TEXT);
  fr.hdc = Printer()->Handle;
  fr.hdcTarget = Printer()->Handle;
  int pageCount = startPage;
  do {
    fr.rc = rendRect;
    fr.rcPage = pageRect;
    TPrinterPage* pp = (TPrinterPage*)pageList->Items[pageCount];
    fr.chrg.cpMin = pp->StartPos;
    fr.chrg.cpMax = pp->EndPos;
    Printer()->NewPage();
    SendMessage(RichEdit->Handle, EM_FORMATRANGE, true, (int)&fr);
  } while (++pageCount < endPage + 1);

  SendMessage(RichEdit->Handle, EM_FORMATRANGE, 0, 0);
  Printer()->EndDoc();

  for (int i=0;i<pageList->Count;i++)
    delete (TPrinterPage*)pageList->Items[i];
  delete pageList;
  Screen->Cursor = crDefault;
}
//---------------------------------------------------------------------------
VB用 API 打开打印对话框 VB用API函数改进ListView控件的显示效果 VB用API函数控制光驱的开关 VB用注册表保存数据(VB函数篇) 有关Tray系统盒的VB API函数 在VB中调用API函数动态改变及恢复屏幕设置 在VB中控制Ctrl+Del+Alt键 在VB中使用API函数 (之二) 在VB中使用API函数 (之三) 在VB中使用API函数 (之四) 在VB中使用API函数 (之五) 在VB中使用API函数 (之一) 在VB中用API实现多媒体 VB怎样用VB在应用程序中调用API VB怎样在DELPHI中使用API函数 指定文件夹-VB资料 VB5中注册控件三法 Bug:维护 Internet Transfer Control 之 Username 及 Pass VB对低层硬件访问控制 HitTest的妙用 -VB资料 ListBox项的控制-VB资料 VB 6.0中类聚集关系的实现 VB6编程中如何获取硬盘分区信息 VB的坐标系统综述 VB调用C程序动态链接库的方法 VB对低层硬件的访问控制 VB软件开发中的错误捕获及处理技术 VB中Combo的一种输入检查制约方法的实现 VB中Winsock控制的UDP协议的使用 VB中的时间处理问题 Windows操作平台下CGI的实现 -VB资料 问题:select * from servername.dbname.username.tablename PCI设备的速度测试之疑问?有精确至毫秒级甚至是100微秒级的函数吗? 一个总是无法解决的问题 window2000中如何用命令行杀一进程? 请问各位大哥:怎样在win98或winme下注册和使用动态连接库“PSAPI.DLL”呀? 再問一遍. 做數據庫的朋友沒有碰到過這個問題嗎.斑主也來看一下.在SQL語句中.怎麼進行區分大小寫查詢.求在ACESS97(2000) 和SQL中的解決方案. 紧急求助:SQL2000联不上SQL7.0是为什么? 怎样改变对话框颜色? To:gloom 你收到了我的Email了吗? From:francohe@sina.com *.nsf 有谁能告诉我? 哪里有installshield 下载呀! 请教:关于sql anywhere 请问在XSL中可否定义一个“全局变量”?即可以在各个子template中都能得到其值? 关于事务处理的理解?你们是怎么理解的拉?欢迎大家发表看法? win98 - dos command length and variable COM COM COM 问一个菜鸟问题,关于参数问题 如何统计一个网页被浏览的时间?快快救我吧,倾情送分,70*5分. 为什么VB做的程序就是这么大!!郁闷!!! 怎样作win98,windows-xp的双启动? 各位大哥,我怎么正确使用API函数“EnumProcesses”呀! 请问在XSL中可否定义一个“全局变量”? api函数ioctlsocket的用途是什么? 请教:MDi窗口的chmHelp问题 Workbook 对象与Workbooks 集合对象有什么区别? 请问项目立项签完合同后,是否还要"回朔" 请问大家用VC是英文版的还是中文版的?我看不懂中文版的。50分!!! 关于用xml保存数据库记录的问题! 求助!!SQL语句的问题。 .pdg格式的文件该用什么阅读器来打开? 有关CString的问题 我怎么在VB中正确使用API函数“EnumProcesses”呀! 怎样才能用数组的方式一下得到当前页面Form中的所有控件名称和值? win2000下JDK1.2的设置问题???请教 请教弱水兄:oracle 中 kill session的语法。 Data Environment的路径问题? 请问:同一个程序在一个机器上编译后大小是300多K,在另一个机器上编译后大小却是400多K,性能没有影响,为何? 各位谁能告诉我昆腾6。4G的硬盘低级格式化软件在昆腾网站的准确位置---都是英语的我看不懂?? win2000下JDK1.2的设置问题??? 紧急重发: 如何始终选中网格中的一条记录,并让此记录反显! 那位好心人能给我相关DevExpress公司的DELPHI控件给我?急!!急!! 为什么编译成exe文件后,在实际操作为非法操作? 从哪里能下载Oracle书籍? 在XSLT中如何把javascript的返回值带到xsl:if中作为判断条件? 求助!如何在网页中统记在线人数? 如何在CListBox中添加多个条目?? Bjarne Stroustrup的专访 (在线收看 MP3下载) 请问:如何将修改的内容保存到数据库中? 一个数据更新的问题 求教:怎么样修改crosstab数据窗口中变动列的列名? 冥王星与其附近的星体卡戎可视为双星系统,质量比约为7:1,同时绕它们连线上某点O做匀速圆周运动.由此可知冥王星绕O点运动的A. 轨道半径约为卡戎的1/7B. 角速度大小约为卡戎的1/7C. 线 两个质量都等于太阳质量2倍的星球组成一对双星 围绕着共同的中心旋转 观察它们彼此环行一周要一星期 求它们之间的距离(设太阳到地球的距离为1.5*10^11m 一年又52个星期)我算了五六遍 天体轨道理论计算先建立坐标系有一质点A(x1,y1)初速度v水平向右,大小就是v质点总受一个加速度a指向原点,大小恒为a这个系统不受其它任何力,记此时刻为t=0时刻求质点轨迹方程x=f(t)y 化学中化合反应与分解反应有何不同 用X表示某化合物的化学式:X+6O2——6CO2+6H2O.下列说法正确的是:A.X是由碳,氢两种元素组成B.X中碳,氢两种元素的质量比为1:2C.X的相对分子质量是174D.X中碳元素的质量分数为40% 天体运动轨迹为什么是椭圆?还有这种轨迹如何算中心天体质量? 化合反应在化学书上第几页 将ABC各10g的混合物加热后,A全部参加反应,生成4gD,同时增加了8gC,则反应中A与B的质量比是多少? 关于构成原子的粒子极其性质质子在电磁场中发生____是电子质量的__倍 中子在电磁场中___偏转 穿透能力强 是电子质量的__倍电子是质子质量的__倍 在电磁场中__偏转 分解反应和化合反应是化学变化吗 几种物质放在一起什么物质优先反应,因为我也不太懂,所以不知道这一问是不是范围太大了要是太大了就帮忙说一下酸碱盐方面的反应顺序 构成钠原子的粒子有哪几种 宇宙中两颗相距较近的天体称为“双星”,它们以二者连线上某一点为圆心做匀速圆周运动,而不至因万有引力的作用吸引到一起.设二者的质量分别为M1和M2,二者相距L(1)试求 它们轨道半径 九上化学所有化合反应方程式.急! 两颗星质量分别为m1 m2 相距L 试求(1)两颗星转动中心的位置(2)这两颗星转动的周期 除了化合反应和分解反应还有没有其他的?还有 氧化反应为什么不属于基本反应类型? 一物体在空气中称重8N,将其完全浸没在水中称重6N.则该物体受到的浮力为( )牛,该物体的密度是( )KG/M立方.(要有过程) 两颗靠得较近的天体叫双星,它们以两者连线上的某点为圆心做匀速圆周运动,这样它们就不会因万有引力的作用而吸引在一起,则下列物理量中,与它们的质量成反比的是( ) ③向心加速度 ④转 两个靠近的天体称为双星,它们以两者连线上某点O为圆心做匀速圆周运动,其质量分别为m1、m2,以下说法正确的是(ACD)A. m1m2O它们的角速度相同.B. 线速度与质量成反比.C.向心力与质量 一物体在空气中称重8N,将其完全浸没在水中称重6N,则该物体受到的浮力为( )N,该物体的密度是( )KG/M的立方.(要有过程) 视密度和表观密度有什么区别 【初三化学题】已知下列四个反应在一定条件下都能发生,其中属于化合反应的是( )A 氧化泵——加热 泵+氧气B 石灰水+盐酸——氯化钙+二氧化碳+水C 酒精+氧气——点燃 水+二氧化碳D 木炭+ 天体运动中知道轨道半径与GM哪些变量(周期 加速度)可确定? 在ZnSO4和CuSO4的混合溶液中,加入过量的铁粉.充分反应后过滤,在滤纸上的固体是A.铁和铜B.铁,铜,锌,C.铜和锌D.只有铜..为什么是A.. 两颗靠得很近的天体称为双星,它们以两者连线上某点为圆心作匀速圆周运动,这样就不至于由于万有引力而吸引在一起,设两双星质量分别为m和M,M=3m.两星间距为L,在相互万有引力的作用下,绕 高中物理天体运动天体的几个值(如地球的质量周期半径等值)总汇有可能的话也把电学和运动学部分的总结一下. 天体坠落,质量为m的天体向质量为M的天体坠落(M>>m),初始距离L,m速度v0,M静止,求坠落时间 潜水艇由水面下10米潜到20米深处时,它所受到的压强和浮力的变化情况是( )A 压强增大、浮力不变B 压强不变、浮力增大C 压强不变、浮力减小D 压强减小、浮力减小 钠与硫直接化合是否会发生爆炸? 将30克A 、20克B和10克C混合,待充分反应后,测得A全部消耗,B剩余4克,C增加6克,同时生成一种新物质D,若生成10克D,则可生成C的物质的质量是 ( )A 16 B 4克 C 0.67克 D1.5克 潜水艇在海面往下潜时,压强与浮力的变化 钠与硫化合的反应化学方程式是啥? 化学反应的题有甲乙丙丁四种物质,在化学反应中的关系是:甲+乙→丙+丁则下列说法正确的是A 若甲为盐酸,丁为水,则乙一定为碱B 若甲为碳水化合物,乙为氧气,则该反应一定为氧化反应C 若将 双星天体之间为什么会那样运动? 某物体在空气中称重是0、8N、浸在水中称重为6、8N、求这个物体的密度、{g=10n|kg} 化学反应题铁钉放在____色的硫酸铜溶液中,铁钉表面有____色的____覆盖,溶液由____色变为____色,说明铁与硫酸铜发生了____反应,化学方程式为____. 化合反应 2Mg+O2_点燃_2MgO 为什么?得到2MgO 某物体在空气中称重21.8N,浸没在水中称重10.2N,求这个物体的密度.(g取10N/Kg)限时回答 10点前回答出来 跪求/////////////急 . 天体之间的距离都是用光年来计算吗 光学双星是天体系统吗? 中心天体的质量怎么求啊?求公式 科学家是怎么计算星体之间的距离 初三化学所有表达式是什么?如2Mg+O2=2MgO 中心天体质量一定大于环绕天体质量? 1.甲、乙两实心球体积之比为4:3,质量之比为5:2,则甲、乙两球的密度之比是( )A 10:3 B 15:8 C 5:6 D 8:152.用铜、铝、木材制成三个质量、体积都相等的球体,则下列说法不正确的是A.三个球都是空 联星/双星是天体吗? 中心天体质量最大是哪一个? 天体的直径,质量是怎么算出来的?比如银河?光谱这个我有点了解,具体说说质量的算法?书上说因为银河在旋转,所以可以算出它的质量.到底怎么算的? 初三化学中的所有方程式,那种有汉语的比如2Mg + O2点燃2MgO把他们的汉语一一对应写出来 跪求 谢谢了对!就像这种 镁-在氧气中点燃-生成 氧化镁 多谢了 我要全部 跪求 还要带上符号 谢 两个物体 分别是 地面上的物体和同步卫星.他们的W相同.则 由v=wr得.v和r 成正比但是 又由 g=根号(GM/r)得.v和根号r成反比.搞不懂.打错了应该是。v=根号(GM/r) 教教我怎么算天体之间的距离和天体质量以及它们的运行轨迹!理科生,或者天文爱好者欢迎回答!O(∩_∩)O哈哈~ 看到化学方程式“2Mg+O2——点燃——2MgO”想到什么(5点) 一艘宇宙飞船飞近某一新发现的行星,并进入靠近行星表面的圆形轨道绕行数圈后,着陆在该行星上,飞船上备有以下实验器材:  A.精确秒表一个 B.已知质量为m 的物体一个  C.弹簧测 遥远星空中天体的密度和质量是怎么算出来的?维基百科,自由的百科全书跳转到:导航,搜索 弥漫星云,意思是朦胧,云雾.弥漫星云没有规则的形状,也没有明显的边界.实际上,除环状对称的行星 潜水艇从潜行变为上浮,在浮出水面只前,所受海水的压强和浮力变化情况正确的是:A:压强增大,浮力不变 B:压强不变,浮力增大 C:压强减小,浮力不变 D:压强不变,浮力减小请说明理由 两个靠的很近的恒星称为双星,这两颗星必定以一定的角速度绕二者连线上的一点O转动才不至于万有引力作用而吸引在一起,已知两颗星质量分别为M1和M2,相距为L,求:1.这两颗星转动的中心位 天体的质量是如何测算出来的?像地球的质量,太阳的质量,甚至是冥王星的质量等等,是如何测算出来的? 潜水艇由水面下10m潜到20m深处,它所受浮力为什么不变 设两颗“双星”的质量分别为M1、M2 两者距离为L 引力常量G求双星各自的轨道半径 如何计算天体轨道
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn