FastReport3動態增加列印Memo,Picture |
尚未結案
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
|
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
我用的是fr2.54,不过你可以参考一下,我想应该差不多: var
page:Tfrpage;
p,m:Tfrview;
begin
page:=Frreport3.pages[0]; //假设已有第一页
p:=Tfrpictureview.create; //创建Picture
p.name:='picture1';
p.setbounds(200,200,100,30); //依次是picture的Left,Top,Width,Hight,注意要在Footer的位置范围之内.
Tfrpictureview(p).Picture.Bitmap.LoadFromFile(extractfilepath(application.ExeName) '\TempImage.bmp'); //加载BMP图
m:=Tfrmemoview.create; //创建memo
m.setbounds(400,200,50,20);
m.name:='memo1';
m.memo.add('memo1');
page.objects.add(p);
page.objects.add(m);
end;
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
hi,xxiaowang大大您好! 請問上面的代碼需寫在哪裡?我試過放在frxReport1BeforePrint事件裡面
出現錯誤(如下圖),請問如何解決?
(注:我的frxReport1裡面並沒有靜態的picture)
procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent); var page:Tfrxpage; p:Tfrxview; begin page:=frxReport1.pages[0]; p:=Tfrxpictureview.create(self); p.name:='picture5'; p.setbounds(200,200,100,30); Tfrxpictureview(p).Picture.Bitmap.LoadFromFile('d:\001.bmp'); page.objects.add(p); end; |
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
|
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
完整代码:
Procedure TFmain.Button1Click(Sender: TObject);
var
page:Tfrpage;
p,m:Tfrview;
begin
page:=Frreport3.pages[0]; //假设已有第一页
p:=Tfrpictureview.create; //创建Picture
p.name:='picture1';
p.setbounds(200,200,100,30); //依次是picture的Left,Top,Width,Hight,注意要在Footer的位置范围之内.
Tfrpictureview(p).Picture.Bitmap.LoadFromFile(extractfilepath(application.ExeName) '\TempImage.bmp'); //加载BMP图
m:=Tfrmemoview.create; //创建memo
m.setbounds(400,200,50,20);
m.name:='memo1';
m.memo.add('memo1');
page.objects.add(p);
page.objects.add(m);
frreport3.ShowReport; //加多这一行;
end; 你show的这个错误我分析,因为BeforePrint是每个控件都会触发一次,你在frreport的BeforePrint事件里创建的picture5又会触发beforeprint,这里会出现一个死循环,所以也就会出现同名错。
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
xxiaowang大大,您好!很感謝你的回答。 我將代碼改寫在Button裡面,確實不會出現上述錯誤,但是會出現以下錯誤。
不知如何解決啊?麻煩你了
procedure TForm1.Button2Click(Sender: TObject); var page:Tfrxpage; p:Tfrxview; begin page:=frxReport1.pages[0]; p:=Tfrxpictureview.create(self); p.name:='picture5'; p.setbounds(200,200,100,30); //Tfrxpictureview(p).Picture.Bitmap.LoadFromFile('d:\001.bmp'); //先不載入圖片 page.objects.add(p); frxReport1.ShowReport; /// end;對了,如果以後貼代碼上來,請加上縮排,請見 < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7326">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7326 |
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
原贴:
procedure TForm1.Button2Click(Sender: TObject);
var
page:Tfrxpage;
p:Tfrxview;
begin
page:=frxReport1.pages[0];
p:=Tfrxpictureview.create(self);
p.name:='picture5';
p.setbounds(200,200,100,30);
//Tfrxpictureview(p).Picture.Bitmap.LoadFromFile('d:\001.bmp'); //先不載入圖片
page.objects.add(p);
frxReport1.ShowReport; ///
end;
-------------------------------------------
请用单步执行跟踪是那一句出错,出现这种错误应是引用了不存在的物件,
注意page:=frxReport1.pages[0]这句,是假定你的FrxReport1已经有一静态页。
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
|
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
|
zxy666666
中階會員 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
您好!我還是沒有試出結果來.
<>< face="Verdana, Arial, Helvetica">引言:
注意这一句:p.setbounds(200,200,100,30);
要将p的位置及大小指定在Footer Band之内.那么如果你的Footer是Report Footer Band,这个Footer及其上面的内容就会出现在报表最尾了。
因為我不知道怎麼去算p的位置及大小(是不是在frxReport設計頁面中拉一個Footer Band,然後再看它的Left,Top,Width,Height屬性值是多少?)所以也不知道有沒有在Footer Band之內 可否再請教您,怎樣在程式中動態新增page ?
我現在有一個想法是:在動態新增的page中,動態增加picture(或Memo)
看會不會有問題. 麻煩您了!
|
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
引言:
-----------------------------------
因為我不知道怎麼去算p的位置及大小(是不是在frxReport設計頁面中拉一個Footer Band,然後再看它的Left,Top,Width,Height屬性值是多少?)所以也不知道有沒有在Footer Band之內
------------------------------------------
正确。 动态创建页的代码:
frreport1.pages.clear;
frreport1.pages.add; //如果要加多页,将此句放在循环内
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |