列印二聯單的問題 |
尚未結案
|
odyaho
初階會員 發表:60 回覆:104 積分:42 註冊:2005-02-15 發送簡訊給我 |
請問各為先進
小弟只做出第一聯的報表(A4上半部) 如圖
想要在A4紙的下半部再印一次相同的格式及資料
第二頁及之後的頁次 會更動的只有紅色圈圈部分(二聯單)
請問各位先進 要怎麼做呢??
我目前設定如下
上面文字(出貨單 ...)部分為rbPageHeader
欄位標題為rbColumnHeader
欄位資料為rbDetail
最下面(未應稅價,客戶地址...)為rbSummary
我是覺得最下面這部分應該要設為rbPagefooter 可是如果這樣設定
最下面這一部分會跑到一整頁的最下面去
< >< >
期待各位先進的回覆..
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
|
odyaho
初階會員 發表:60 回覆:104 積分:42 註冊:2005-02-15 發送簡訊給我 |
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
將表單顯示在螢幕上與列印至Printer,基本上是沒有差別的(都是對DC畫東西),
最大的差別就是DIP數的問題.但這個問題絕大部分是可以使用縮放比來處理.
以你目前的運用因該也碰不到不能用用縮放比來處理的情況.
所以,你先寫一個Function,其中一個參數必須是傳入DC,而Function中就是你要輸出到該DC上的程式碼(畫畫線,寫寫字阿等等).當然目前你所傳入的DC是銀幕DC.
還有一個要注意的是,你在任何對DC動作的單位要以長度為單位(如公分,公吋等度量恆).(當然最終傳入API的一定是DPI) 囉哩囉說講了那麼多,好像很困難喔!!!其實實做上一點都不困難.只是觀念要清楚.
|
odyaho
初階會員 發表:60 回覆:104 積分:42 註冊:2005-02-15 發送簡訊給我 |
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
void __fastcall TForm3::Button1Click(TObject *Sender)
{
if(PrintDialog1->Execute())
{
TPrinter* prn=Printer();
prn->BeginDoc();
//記錄目前DC的狀態
::SaveDC(prn->Canvas->Handle);
//設定映射模式
::SetMapMode(prn->Canvas->Handle,MM_ANISOTROPIC);
//設定縮放比
::SetWindowExtEx(prn->Canvas->Handle,96,96,NULL);
:: SetViewportExtEx(prn->Canvas->Handle,::GetDeviceCaps(prn->Canvas->Handle,LOGPIXELSX),::GetDeviceCaps(prn->Canvas->Handle,LOGPIXELSY),NULL);
//輸出到印表機DC
PlayDoc(prn->Canvas->Handle);
//還原DC的狀態
::RestoreDC(prn->Canvas->Handle,-1);
prn->EndDoc(); }
}
void __fastcall TForm3::PlayDoc(HDC hDC)
{
//在 X=1吋 Y=1吋的位置印出 ABC 三個字
::TextOut(hDC,96,96,"ABC",3);
}
//--------------------------------------------------------------------------- void __fastcall TForm3::Button2Click(TObject *Sender)
{
//輸出到銀幕DC
PlayDoc(Canvas->Handle);
} 上列程式碼所印出的字,不管在銀幕或者是印表機,其左上角都在 X=1吋 Y=1吋的地方.
可是印出的程式碼只共用一份,不知這樣你懂了嗎???
所以我才會說,銀幕印的正確出來,印表機就會正確. 發表人 - jcjroc 於 2005/08/07 23:25:21
|
odyaho
初階會員 發表:60 回覆:104 積分:42 註冊:2005-02-15 發送簡訊給我 |
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
那個是WINDOWS API 中的GDI API啦
兩個冒號是命名空間的語法....(不好意思,你對C 語法的了解程度該要去加強了!!!!)
基本上範例中除了利用PirintDialog選取印表機並得到其DC外.其他幾乎是用API來達到.VCL的TCanvas也是將這些API包裝後的呈現.
但其他,我在這方面都是用API來做,ㄏㄏㄏ,要圓要扁自己來.
不過那也是因為我所要列印的東西非常之複雜,並要求非常精準,以VCL的物件所提供的無法達到(它的特性問題),至於你要的東西它都可以支援. 建議你去買本書來看(好像緩不濟急喔),切記,不是叫你去深入研究喔,只是要你去了解WINDOWS提供哪些API,各有啥功用,然後找出對你目前有用的加以了解. 善用別人提供的Framework(或Library)不是壞事,也是提高效率的最高原則.
但如果基礎不好,不了解運作原理,最終就是"礙手礙腳"加上兩手一攤"老闆,我做不到你的要求" 發表人 - jcjroc 於 2005/08/09 08:37:53
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |