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

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

编辑:说三道四文库 发布时间:2017-01-25 01:28
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;
}
//---------------------------------------------------------------------------
Windows 8商店应用总数突破20000大关 硝烟弥漫:三星起诉苹果最新iPad、iPod侵权 效仿Google Facebook欲整合Instagram用户数据 与苹果全面竞争?传微软明年推Xbox机顶盒 微软Ralph Haupter:WP8即将在中国上市 开发者黄金时代来临 Paul Graham:Y Combinator创始人成长轨迹 我们需要强密码吗? 为了改变?英特尔CEO宣布将于明年5月辞职 传苹果下一代Mac OS中将整合Siri及地图服务 TripAdvisor:使用AWS比服务器托管成本节省50% [MDCC精华]亚马逊AWS布道师Kingsley Wood:灵活IT架构之道 亚马逊诉讼彰显谷歌在公有云领域威慑力十足 AWS全球创业大赛 奖金100000美元 YY:破冰而出,成功上市 Xtreme Labs工程师:Android开发常陷入的五大深坑 Elon Musk:没了乔布斯的苹果干不过谷歌 旁门左道:第一次开发移动游戏就赚到28623美元 移动周报:小聪明赚大钱 游戏SEO如何耍鸡贼? 创翼全国 六城联动——2012移动互联网应用创新大赛开放日 全国六城联动沙龙 爱丽丝+福尔摩斯 Game Insight解谜游戏玩出新花样 Windows Phone 8 SDK大升级:部分功能兼容WP7 信息大图《愤怒的小鸟》发家史 Intel预测:10年之后你的手机是48核的 消息推送惹怒用户:应用开发者请别太过分 创新工场:我们如何孵化未来? iOS越狱比例下降:国内移动开发环境怎么了? 响应式图像技术与资源分享 看Twitter如何应对大选:少些Ruby 多些Java 软件开发中常见的十大系统瓶颈 [CTO俱乐部87期]三人行架构分享:开源是背后的支柱 推荐5款超实用的.NET性能分析工具 离散数学主要是讲什么?它在计算机中有何用?谢谢! 俺家水果大丰收,信息改如何发布? 怎样制作封面 请教升级注册码的问题。欢迎讨论 请问,一台机器能装两套win2000吗? 关于VXD的问题 谁来讲讲turbine?? 【 关于数据库的问题,请帮忙。 】 单击CListCtrl中的CheckBox触发什么事件?该用哪个函数处理? 关于VXD的问题1 急!!!一个怪问题! 怎样获取指定框架(frame)的大小? 各位大虾,小弟有一个关于windows2000的问题 招聘信息 Happy Time!关于邮件安全谁有好的建议?找一个不运行脚本和控件的客户端还是自己写一个? 做一个合格的程序员需具备那些知识? EXCEL.APPLICATION的关闭事件 再次retrieve时报错“ARITHMETIC OVERFLOW OCCURRED” 急:如何在ASP中使用Microsoft Index Server? 简单但是比较不常用的问题,来拿分吧! 谁能告诉我有关一些开发e-mail软件的资料 我想要源代码 用ADO DATA控件和ACCESS数据库连接好后,怎样断开。 软体蛀虫再战江湖,续原来的帖子“愿意给中国共享软件作者提供一些帮助,共同推动中国软件业!”。请大家赏光 请问:各位在数据库的时候,对于性别,使用0/1 还是男/女 程序运行后,改变屏幕的分辨率后,比如改小,则程序窗体有部分到屏幕外边了,如何在改变分辨率的时候,让程序的窗体大小也跟着改变? 各位高手帮帮忙!!!!!!! ------急--------急---------急--------- 在c/s结构中,到底用不用数据敏感控件? 用ALT+F4关闭窗口会不会引发form_queryunload和form_unload事件? 请对表格熟悉的资深高手请进! 在linux下怎样使用libpcap截获IP数据包并统计每个IP地址的数据流量以便计费???请给出一点思路。多谢! 怎样在用户控件中引用第三方的控件? 请教:为什么我的activex dll下载后不能使用 求救: access數據庫用戶組中Admin的密碼丟失,怎么辦? 请问各位 那里有 delphi的电子书籍下载??/ Oracle:怎样在Client和Server之间建立联系? JAVA中的2维数组赋值问题。 怎样将整形变量的值转换为字符串的值 为何汉字会变成乱码?? VC动态链接库调用的问题 怎样打开DLL中的Form? 庆祝这个开心的星期六!送分 如何在程序中将一个变量放入指定的节(session)中,而不论这个变量是否是初始化的? 登陆SQL PLUS 问题???请帮忙,谢谢!! 初学DirectX的几个问题 定时执行某段代码~ 有关ADO中智能指针的初始化问题?很菜的! 还是局域网共享文件夹密码问题,我看了袁哥的主页,按照他的方法怎么不行呢, where can we find free webspace to store my programs? 请各位大师救救我吧:如何在CRichTextCtrl或其他的什么控件中打开一个DOC文件,十万火急,答对50分一定奉上,谢谢! 这是什么错误:Exception in thread "main" java.lang.NoClassDefFoundError: TestBed/class 某种金属棒在温度变化很小时,它的膨胀公式为L-100=0.OO1×(T-10),其中L是温度T时金属棒的长度,L是不是T的一次函数?当T=12℃时,L等于多少? 容积单位有什么 某烧杯装满水的总质量是350G.放入一块合金后,溢出一些水 这时质量为500G 取出合金后杯和水总质量为300G 求合金的密度 同一材料,但粗细、长度不同的金属棒,在同样的温度,他们的线膨胀系数是否相同?膨胀量是否相同? 关于液体容量的单位换算?》比如水的容量该怎么算.HL?KL?也就是1毫升等于多少吨?一千升等到于多少吨.毫升?千升?分别用什么字母表示?请说得详细明了易懂一些!还有水的体积和重量单位的换 合金的密度是多少 钢筋单位质量理论计算公式(假设已知钢筋直径为D):__________________ 升和毫升是计量液体的单位名称吗? 求合金密度.一块铜金合金,质量200g,体积20cm3,金密度19.3g/cm3,铜8.98g/cm3,分别求金铜体积别列方程,用浓度三角解. 温度和显度的计算公式.在温湿度计的左边是温度刻度,右边有湿度的刻度,似乎温度越高湿度就会越大!它们之间的计算公式是什么?公式里的各个参数代表什么?如何计算? 面积体积的公式图形的体积面积周长的计算,要用字母啊……同志们…… 1 一个空杯子装满水水的总质量为500克 用它装满酒精能装多少克(酒精密度0.8×十的三次方千克每立方米)2 一个空杯子装满水总质量为1千克用它装另一种液体可以装1.2千克求这种液体的密 一个公式忘记了.气体物质的量和温度、体积关系那道.公式怎么写?每个字母代表什么? 温度补偿计算公式我公司有一种预烤炉和隧道炉,主要用来烘烤手机、电脑等其他玻璃制造,因为经常炉温的三条曲线不正常(红、绿、蓝,三条曲线温度必须每天维持在210度左右才算正常),有 计算面积,体积公式所有可以计算的,地、型、立体等、 谁能帮我总结一下物质的量和气体摩尔体积里面所有涉及到的公式?要全,知道多少写多少 计算温度的公式比如90度的热水和20度的冷水,多少比例可以混合成30的温水 我要面积,长度,时间,重量的公式 等体积、等物质的量浓度的强碱中所含的氢氧根离子数一定相等,为什么错 分子间隔的大小与温度有关么 所有物体的体积、面积、周长的文字公式 浮力计算公式准确一定,要查过书的,有证据的. 恒压下温度升高单位体积内的分子总数怎么变化 扇形的面积和体积与周长的文字公式是什么? 浮力的计算公式 温度升高,分子体积变大吗? 梯形体积计算公式? 体积公式 单位体积液体的重量称为液体的什么? 菱形体积公式拜托各位大神 梯形体积计算公式?最好写出图. 单位体积内液体的重量称为液体的什么? 我要所有的体积和容积的公式? 梯形台体积计算公式 )叫做容积,计量容积一般用( ),计量液体的体积常用容积单位( )和( ).希望学习成绩还不错的来解答! 质量密度体积公式谢谢了,大神帮忙啊 梯形的体积计算公式是? 计算容积,一般用( )单位,但实际量液体的体积,如汽油、水等,常用( )单位( )和( ) 园环的体积公式是什么?谢谢了,大神帮忙啊 梯形体积公式有一梯形容器,上表面长4米、宽0.7米,下表面长5米、宽2.6米,上下表面高1.1米,请问它的容积是多少? “计算液体的体积,常用容积单位.”这句话是否正确? 重力的大小也叫(),物体所受的重力与质量成(),用公式()来表示 梯形的体积公式预算中用到算承台的砼的量 常用得体级单位有(),(),(),计量液体的体积常用()和()作单位帮帮忙 有计算椭球型物体的体积和表面积公式吗? 在一定温度下,将ph=2的h2so4溶液与ph=13的naoh溶液混合后,溶液恰好呈中性,则h2so4溶液与naoh溶液的体积比 计量液体的体积常用什么做单位 椭圆形的体积公式 为什么标准溶液要进行不同温度时体积校正 容积单位有几个,分别是什么 合金密度怎么求两种金属的密度分别为p1、p2,取质量相同的这两种金属做成合金,求这种合金的密度.(p1+p2)/2对不对啊 升高温度,溶液里溶解的溶质更多,问那溶液的体积变化吗? 体积单位和容积单位的区别请教一道判断题“计算容积一般用体积单位”应该判对还是错?问什么?发表一些意见! 合金密度问题有一种合金密度是1.2*10^3km/m^3,它是由下列物质中某两种物质组成的,根据下列组成合金物质的数据,判断组成此合金的两种金属可能是?1.金:19.3*10^3【密度】2.铅:11.3^10^3 【密度 溶液温度和加入盐酸的体积的关系在一定体积的氢氧化钠溶液中滴加盐酸,为什么温度会先上升后下降? 容积的单位有哪些 合金密度怎么算?甲、乙两金属的密度分别为(就当是那个希腊字母了)P甲、P乙,将等质量的甲、乙两金属制成合金,则合金密度为→答案是2P甲×P乙÷(P甲+P乙),为什么呢? 在使用容量瓶配制溶液时,为什么必须要等溶液的温度恢复到室温后再将溶液转到容量瓶中? 容积单位是什么 题目是这样的,铅铁合金中铅的体积占五分之一,其余是铁,求合金的密度是多少?(p铅=11.3克/立方厘米,p铁=7.9克/立方厘米)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn