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

BCB 標籤列印的問題

尚未結案
kib57987
一般會員


發表:4
回覆:11
積分:3
註冊:2003-06-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-23 02:38:16 IP:203.70.xxx.xxx 未訂閱
大家好,初次接觸列印報表有些問題希望大家幫幫我 在撰寫code時有些問題,code如下: void __fastcall TForm1::BitBtn10Click(TObject *Sender) { TPrinter *Prntr=Printer(); Prntr->BeginDoc(); Prntr->Canvas->Font->Size=12; Prntr->Canvas->Font->Name = "@新細明體" ; Prntr->Canvas->Brush->Color = clBlack; . . . Prntr->EndDoc(); delete Prntr ; } 我的問題是,第一次執行這個function用fineprint預覽是正常的 但第二次會出現address錯誤,錯在Prntr->BeginDoc();這一行 請問這是為什麼呢?
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-23 09:25:59 IP:218.32.xxx.xxx 未訂閱
您好,可以試試TPrintDialog 。
TPrintDialog *PrinterPhoto = NULL;        try
    {
        PrinterPhoto = new TPrintDialog(NULL);            if(PrinterPhoto->Execute())
        {
                lc_pPrntr->BeginDoc();
                lc_pPrntr->Canvas->Draw(200,200,IMGview->Picture->Graphic);
                lc_pPrntr->EndDoc();
        }
    }
    __finally
    {
        if(NULL != PrinterPhoto)
        {
            delete PrinterPhoto;
            PrinterPhoto = NULL;
        }
    }
------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D ------------------------------- 發表人 - anpino 於 2004/04/23 10:24:04
kib57987
一般會員


發表:4
回覆:11
積分:3
註冊:2003-06-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-23 15:56:52 IP:203.70.xxx.xxx 未訂閱
TPrintDialog 是叫出列印設定那個對話框 我試了之後還是一樣的問題 第二次會出現address violation錯誤在Prntr->BeginDoc();這一行~~~ 慘慘慘..
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-23 16:54:28 IP:218.32.xxx.xxx 未訂閱
引言: TPrintDialog 是叫出列印設定那個對話框 我試了之後還是一樣的問題 第二次會出現address violation錯誤在Prntr->BeginDoc();這一行~~~ 慘慘慘..
咦? ... 我的一直按都沒出現錯誤耶... 可否麻煩您將BitBtn10Click裡的code貼出來, 我來幫你測測看。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-23 16:55:50 IP:61.221.xxx.xxx 未訂閱
kib57987, 您好 請試試這樣的方法是否可行 < class="code"> Printer()->BeginDoc(); Printer()->Canvas->Font->Size=12; Printer()->Canvas->Font->Name = "@新細明體" ; Printer()->Canvas->Brush->Color = clBlack; . . . Printer()->EndDoc(); ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
kib57987
一般會員


發表:4
回覆:11
積分:3
註冊:2003-06-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-25 12:26:30 IP:211.74.xxx.xxx 未訂閱
謝謝tech_state,改成 Printer()->BeginDoc(); Printer()->Canvas->Font->Size=12; Printer()->Canvas->Font->Name = "@新細明體" ; Printer()->Canvas->Brush->Color = clBlack; . . . Printer()->EndDoc(); 是不會有address violation的問題,但是第二次預覽之後畫面會全黑...>< 我貼上code給大家看看,   for(i=0,k=0;iCount;i ){ if(i%8==0){ Printer()->BeginDoc(); //畫橫線 for(int i=0;iPageHeight;i =WidthOfCol) Printer()->Canvas->Rectangle(0,i,Printer()->PageHeight,Printer()->PageWidth); //畫中間直線 Printer()->Canvas->Rectangle(Printer()->PageWidth/2,0,Printer()->PageWidth/2 1,Printer()->PageHeight); // Printer()->Canvas->Font->Size=12; Printer()->Canvas->Font->Name = "@新細明體" ; Printer()->Canvas->Brush->Color = clBlack; } tmp=ListBox1->Items->Strings[i]; key=""; key = tmp.SubString(2,tmp.Pos("]")-2) ; SQL="SELECT name,post,section,road,alley,non,number,floor FROM member WHERE sn='" ; SQL =key ; SQL ="'" ; DM->Q1->Close(); DM->Q1->SQL->Text = SQL; try{ DM->Q1->Open(); } catch(...){ Application->MessageBoxA("無法初始化報表!","系統資訊",MB_OK MB_ICONINFORMATION); return; } name=DM->Q1->FieldByName("name")->AsString; post=DM->Q1->FieldByName("post")->AsString; address=DM->Q1->FieldByName("section")->AsString; address ="區"; address==DM->Q1->FieldByName("road")->AsString; address ="路"; address =DM->Q1->FieldByName("alley")->AsString; address ="巷"; address =DM->Q1->FieldByName("non")->AsString; address ="弄"; address =DM->Q1->FieldByName("number")->AsString; address ="號"; address =DM->Q1->FieldByName("floor")->AsString; address ="樓"; if(i%2==0){ //左 Printer()->Canvas->TextOutA(300,10 Printer()->Canvas->TextHeight(name) k*WidthOfCol,name) ; Printer()->Canvas->TextOutA(300,150 Printer()->Canvas->TextHeight(post) k*WidthOfCol,post) ; Printer()->Canvas->TextOutA(300,300 Printer()->Canvas->TextHeight(address) k*WidthOfCol,address) ; } else{ //右 Printer()->Canvas->TextOutA(1800 WidthOfCol,10 Printer()->Canvas->TextHeight(name) k*WidthOfCol,name) ; Printer()->Canvas->TextOutA(1800 WidthOfCol,150 Printer()->Canvas->TextHeight(post) k*WidthOfCol,post) ; Printer()->Canvas->TextOutA(1800 WidthOfCol,300 Printer()->Canvas->TextHeight(address) k*WidthOfCol,address) ; k ; } if(i%8==0&&i>0){ Printer()->EndDoc(); } } if(i<8){ Printer()->EndDoc(); }
jcjroc
高階會員


發表:21
回覆:276
積分:114
註冊:2002-09-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-30 00:43:06 IP:61.219.xxx.xxx 未訂閱
你因該是有BeginDOC但沒EndDOC 還有去看一下TQuery的ParamByName的用法,除動態查詢外,沒人會像你這樣組合Sql Command的,沒效率又容易出錯
kib57987
一般會員


發表:4
回覆:11
積分:3
註冊:2003-06-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-01 17:10:39 IP:203.70.xxx.xxx 未訂閱
嗯,我會再測試看看, 謝謝你的指導
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-09 16:57:38 IP:61.66.xxx.xxx 未訂閱
void __fastcall TForm1::BitBtn10Click(TObject *Sender) {  TPrinter *Prntr=Printer(); Prntr->BeginDoc(); Prntr->Canvas->Font->Size=12; Prntr->Canvas->Font->Name = "@新細明體" ; Prntr->Canvas->Brush->Color = clBlack; . . . Prntr->EndDoc(); delete Prntr ;<----這行拿掉吧.. }
ADDi
一般會員


發表:1
回覆:7
積分:1
註冊:2004-10-20

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-11-08 12:01:05 IP:61.56.xxx.xxx 未訂閱
. . . Prntr->EndDoc(); delete Prntr ; } 這個唯一的Global Printer被你砍了 再跑一次Printer() 也跑不出新的Printer 就掛了~
系統時間:2017-12-15 23:38:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!