請問依各quickreport的問題(關於QRShape) |
尚未結案
|
kolin903
一般會員 發表:3 回覆:8 積分:2 註冊:2003-05-20 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
kolin903
一般會員 發表:3 回覆:8 積分:2 註冊:2003-05-20 發送簡訊給我 |
|
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
as cmj Sir說的preview看到只是參考,應該以列印出來結果為準.
不知道你有沒有實際印看看,不過我在測試的結果preview時就有看到QRShape1顯示了,如果你印出來還是不行,請把程式上傳到求助區幫你看是否有地方沒設定好吧.
引言: 您好 我是這樣寫的 QRShape1.TOP :=0; QRShape1.width:=1; QRShape1.Height:=QRSubDetail1.Height; 但是我在 preview看時還市一點作用都沒有 是否是在列印時才會有效果能還請大大能夠幫忙告知一下發表人 - chih 於 2003/06/01 12:54:22 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
QRShape1.Height:=QRSubDetail1.Height; 沒用是因為在 beforeprint 時 QReport 還沒有最後修訂 Band 的 Height,原因是你還可以修改Band 裡的內容。 最後修訂 Band.Height 是發生在 BeforePrint 之後但那時你已不能定 QRShape1 的 Height 了 我的經驗是若你想畫會隨著 AutoStretch 元件變高的垂直線,最好就是直接使用該元件的 Frame,因為 QReport 會在BeforePrint 後調整該元件高度時調整 Frame 那些線 若你真的不能直接使用該元件的 Frame ,可使用獨立的 QRLabel 設定 autoStretch 是 True, 使用合用的 Frame, 設定 Transpernt True,在 BeforePrint 時似最多行的元件的行數搜入空行到該 QRLabel,這樣比較煩但能達到伸繽長度。
|
kolin903
一般會員 發表:3 回覆:8 積分:2 註冊:2003-05-20 發送簡訊給我 |
我的程式是這樣寫的,這邊是用QRLabel但我不知道要如何蒐入DetailBand的空行
procedure TDEV_PRINT_FORM.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
QRLabel77.Top:=0 ;
QRLabel77.Width:=1;
QRLabel77.Height:= DetailBand1.Height ;
end; 而這邊我適用QRShape.Height 來作依樣沒有反應
procedure TDEV_PRINT_FORM.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
QRShape.Height .Top:=0 ;
QRShape.Height .Width:=1;
QRShape.Height .Height:= DetailBand1.Height ;
end;
不知道是哪寫錯了還請前輩們幫忙一下
|
kolin903
一般會員 發表:3 回覆:8 積分:2 註冊:2003-05-20 發送簡訊給我 |
我的程式是這樣寫的,這邊是用QRLabel但我不知道要如何蒐入DetailBand的空行
procedure TDEV_PRINT_FORM.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
QRLabel77.Top:=0 ;
QRLabel77.Width:=1;
QRLabel77.Height:= DetailBand1.Height ;
end; 而這邊我適用QRShape.Height 來作依樣沒有反應
procedure TDEV_PRINT_FORM.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
QRShape.Height .Top:=0 ;
QRShape.Height .Width:=1;
QRShape.Height .Height:= DetailBand1.Height ;
end;
不知道是哪寫錯了還請前輩們幫忙一下
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
如果你紅色部分是筆誤的話,應該是這樣
QRShape.Top:=0;
QRShape.Width:=1;
QRShape.Height:= DetailBand1.Height;
另外這裡我做了一個範例
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=31559
preview 跟Print都正常的,參考看看
引言: . . 而這邊我適用QRShape.Height 來作依樣沒有反應 procedure TDEV_PRINT_FORM.DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin QRShape.Height .Top:=0 ; QRShape.Height .Width:=1; QRShape.Height .Height:= DetailBand1.Height ; end; 不知道是哪寫錯了還請前輩們幫忙一下發表人 - chih 於 2003/06/02 09:50:49 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
kolin903
一般會員 發表:3 回覆:8 積分:2 註冊:2003-05-20 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
QRRichText 比較難攪,因為內裡的字體可能改變沒固定行高,若是 Label / Memo 就比較好處理因為行高固定可以在 Beforeprint 即時檢查該元件會用來少行然後設定同樣空行給獨立的 TQRLabel / TQRMemo TQRRichText 的話你可試試
1. Copy 原本的 RichText 元件
2. 新的這個設定 Frame 來劃線
3. 字體設白色(或你的底色)放好位置
4. 右按該元件->Control->Send To Back 使之放到最下便不會擋著其他元件 若Load Data 要分別 Load 給兩個元件,這樣這條線便會與原本的 RichText 同樣高了
不過,若 RichEdit 裡有自訂文字顏免的話便不成了,這我也沒想到其他辦法。 Chih 兄,
你的範例是固定欄高的,kolin903 要求的是變化欄高的,問題就是TQRRichText AutoStretch 時線沒跟著變高,若你有好辦法可否加進範例中,謝謝。
|
kolin903
一般會員 發表:3 回覆:8 積分:2 註冊:2003-05-20 發送簡訊給我 |
引言: hi..kolin903 1.不知道你有沒有執行過我上面的範例,QRShape1設計時期left是364,我在DetailBand1BeforePrint將left改變為0,事實上也是可行的 2.你原先問題是有關QRShape,怎麼到現在變成了QRRichText1ㄋ??[quote] 您好我用的元件是QRRichText1chin前輩你可能有點誤會我的意思了 我現在把我的東西POST上來你看一下吧 這張是我還沒有執行pieview時的狀況;在業務部旁的那條線是用QRShap畫的 下面這張是我pieview後的畫面 那條QRShap的線並沒辦法因QRRichText的內容增加而加長因此造成了一段空白部分而我之前照了前輩的方法試了但他都沒作用 可能是我之前沒把問題敘述清楚造成了大大們的誤解深感抱歉 |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
kolin903
一般會員 發表:3 回覆:8 積分:2 註冊:2003-05-20 發送簡訊給我 |
引言: hi..kolin903.. 你貼上來的圖有點不清楚,可以把第一張圖再放清晰點嗎?因為看不到業務部所對應的band是什麼.chih大大那個band是Detailband其它的都是sub detail 我發現用大大的方法是會增長的但是只會增長到 detailband變動前的長度所以我用了一個奇怪的作法 procedure TDEV_PRINT_FORM.DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin QRShape2.Top:=0 ; QRShape2.Width:=1; QRShape2.Height:= DetailBand1.Height 400; 我想不會變動到最後的長度就是如Justmade大所說的因為在 beforeprint 時 QReport 還沒有最後修訂 Band 的 Height,原因是你還可以修改Band 裡的內容。最後修訂 Band.Height 是發生在 BeforePrint 之後但那時你已不能定 QRShape1 的 Height 了 所以我自行加了長度但我覺的這個方法一定會有問題因為有的地方 不會要那麼長會出現超出表格的情況 還有這樣寫在sub detail時也會出現下面的情況 [Error] UDEV_PRINT.pas(394): Undeclared identifier: 'QRSubDetail3' [Error] UDEV_PRINT.pas(394): Missing operator or semicolon [Fatal Error] DEV_PRINT.dpr(6): Could not compile used unit 'UDEV_PRINT.pas' 還請大大們能夠指點一下錯誤謝謝 |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |