在设计报表时,将memoview的name属性设为memoBillNo,值设为[frxdbdataset1."BillNo"],
报表运行时,在PrintReport事件中如何获取memoview的值?
我现在的程序如下,但取道的值始终是 frxdbdataset1."BillNo" 字样的字符串。procedure TdmDataModule.frxReport1PrintReport(Sender: TObject);
var
strBillNo:string;
begin
if frxReport1.FindObject('memoBillNO') <> nil then
begin
strBillNo:=tfrxmemoview( frxReport1.FindObject('memoBillNO')).memo.text;
showmessage(strBillNo);
end;
end;
报表运行时,在PrintReport事件中如何获取memoview的值?
我现在的程序如下,但取道的值始终是 frxdbdataset1."BillNo" 字样的字符串。procedure TdmDataModule.frxReport1PrintReport(Sender: TObject);
var
strBillNo:string;
begin
if frxReport1.FindObject('memoBillNO') <> nil then
begin
strBillNo:=tfrxmemoview( frxReport1.FindObject('memoBillNO')).memo.text;
showmessage(strBillNo);
end;
end;
如果是在弹出的属性窗口中写“表达式”的话,你试试用:
[<frxdbdataset1."BillNo">]2、另外,我一般直接取.text属性,不是.memo.text:
tfrxmemoview( frxReport1.FindObject('memoBillNO')).text;
我一般是有一个打印按钮,然后在打印按钮中,首先准备数据集,准备好后,再写修改报表某些Memo文字的代码,
最后是PrepareReport(True);和Print;
如果是要读取Memo文字,可以在PrepareReport(True);后进行。
谢谢你的留言。
因为我要记录打印次数,所以在PrintReport事件中执行。
谢谢你的留言。
情况是这样的: 因为我要记录某个单据的打印次数,所以在PrintReport事件中,根据显示单据编号的Memo上的text来确定当前打印的是那张单据,然后更新数据库中相应记录。预览时MemoBillNo上显示的是单据号(例如RK001),但利用下列语句取到的值却是frxdbdataset1."BillNo"字样.tfrxmemoview( frxReport1.FindObject('memoBillNO')).memo.text;
或
tfrxmemoview( frxReport1.FindObject('memoBillNO')).text;
请你说详细一些,我不太明白,Thanks !
如果只希望用MEMO,还可以直接将右边显示的DATESET的字段拖拽过来正确的变量表达式两边是用中括号括起来的DATESET值的获得办法是在DATESET的getvalue事件里写的报表里还可以用自定义的变量,比如报表里写[RptCode],在代码里,报表控件的getvalue方法里可以写
if sametext(varname, 'RptCcode') then
begin
value := '123';
end;至于说要记录打印次数,我不是很理解这个需求的具体含义
感谢你的留言。
我使用的memo,其中的内容是通过拖拽右边的DATESET的字段设置的,我想在程序运行时取得memo的text属性值(用于判断当前打开的报表是否需要记录打印次数),但取到的值始终是 frxdbdataset1."BillNo" 字样的字符串,而不是其显示的内容。
是的,正如你所述的那样:程序中需要用到报表里的某个字段的值。
var
Cross: TfrxCrossView;
i, j: Integer;
begin
if c is TfrxCrossView then
begin
Cross := TfrxCrossView(c);
for i := 1 to 16 do
for j := 1 to 16 do
Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]);
end;
end;不过LZ这样的情况,我觉得是否可以换个角度思考既然数据源头来自DATESET,可否从DATESET入手