全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1231
推到 Plurk!
推到 Facebook!

如何知道印表機是否正在列印中?

尚未結案
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-10 15:40:03 IP:218.160.xxx.xxx 未訂閱
我想印多張圖,一張一張的印並且能隨時能中斷列印,之後的圖就不想再印了. 程式紅色部份是我想等待印完再繼續印下張圖,但是沒有作用,不知各位先進有沒有其他的好方法? 我每次壓Button1時,10張圖就直接到印表機的暫存器裡,雖然印第一張就按中止列印,但它還是會再印第2到第10張.     
 
//---------------------------------------------------------------------------    #include 
#include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int Quit;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------    //列圖
void ToPrint(Graphics::TBitmap *bmp)
{
  TPrinter *p = Printer();
  p->BeginDoc();
  p->Canvas->CopyRect(Rect(0,0,p->PageWidth,p->PageHeight),
  bmp->Canvas,Rect(0,0,bmp->Width,bmp->Height));
  p->EndDoc();
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Image1->Picture->LoadFromFile("C:\\1.BMP");      Quit = 0;
  for (int i=0;i<10;i  )
  {
    ToPrint(Image1->Picture->Bitmap);

// 等待列印完再繼續
    while (Printer()->Printing)
    {
      Application->ProcessMessages();
      if (Quit) break;
    }
//  按中斷鍵離開
    if (Printer()->Aborted) break;        if (Quit) break;
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Quit = 1;
}
//---------------------------------------------------------------------------
tonytop
中階會員


發表:6
回覆:114
積分:89
註冊:2003-12-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-12 13:41:27 IP:210.64.xxx.xxx 未訂閱
這裡好像是delphi區,好在跟c++是兄弟< > 程式看來印是用>....來印,但中斷卻用>...,這樣偵測的到在列印中嗎? 試著改成下列程式看看囉< > < class="code"> //列圖 void ToPrint(Graphics::TBitmap *bmp) { Printer()->BeginDoc(); Printer()->Canvas->CopyRect(Rect(0,0,Printer()->PageWidth,Printer()->PageHeight), bmp->Canvas,Rect(0,0,bmp->Width,bmp->Height)); Printer()->EndDoc(); }
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-12 20:49:54 IP:218.160.xxx.xxx 未訂閱
非常感謝 tonytop 前輩的回答. 
引言: 這裡好像是delphi區,好在跟c 是兄弟
post上來才驚覺post錯地方,即然post錯了地方,反正delphi跟c 是兄弟, delphi能解決,bcb應也會沒問題.
引言: 程式看來印是用p->....來印,但中斷卻用Printer()->...,這樣偵測的到在列印中嗎? 試著改成下列程式看看囉
因己把 p 設成 Printer(),所以測的結果還是一樣.
系統時間:2024-04-20 4:09:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!