我用FastReport设计了一张报表,里面大概有十多个memo,都只设置了适当的打印格式,内容在打印前才动态设置。
我在procedure Tform1.Report1GetValue(const ParName: String; var ParValue: Variant);里面使用if parname='Memo1' then Parvalue:='123';这种方工不能实现。
又尝试report1.showpreparereport前加入以下类似语句
Report1.findobject('Memo1').memo.text :='123';运行时报错:
"Access violation at address XXXXXXXX in module 'XXXXXX.exe'.Read of address XXXXXX"
请问各位大侠我该怎么做才对呢?
我在procedure Tform1.Report1GetValue(const ParName: String; var ParValue: Variant);里面使用if parname='Memo1' then Parvalue:='123';这种方工不能实现。
又尝试report1.showpreparereport前加入以下类似语句
Report1.findobject('Memo1').memo.text :='123';运行时报错:
"Access violation at address XXXXXXXX in module 'XXXXXX.exe'.Read of address XXXXXX"
请问各位大侠我该怎么做才对呢?
函数procedure Report1GetValue(const ParName: String; var ParValue: Variant);中
参数ParName指的是变量参数名,而不是控件名称。
你在报表的Memo1控件里面输入文字[Memo1],用你的方法,预览出来就是'123'了。
fastreport中,用[]括起来的叫做变量。也就是会作为ParName传给TfrReport.GetValue函数。Q2:
//首先你要在你想显示Form1.edit1.Text的Memo里设置一个变量,例如[MyName]
procedure Report1GetValue(const ParName: String; var ParValue: Variant);
begin
if CompareText(ParName,'MyName') = 0 then
ParValue := Form1.edit1.Text;
end;
begin
frReport1.LoadFromFile(ExtractFilePath(Application.ExeName)+ 'WaterNesting.frf');
frReport1.FindObject('MVChargeDate').Memo.Text := FormatDateTime('yyyy-mm-dd',Now);
frReport1.FindObject('MVUnitName').Memo.Text := gUnitName;
frReport1.FindObject('MVUserName').Memo.Text := UserName;
frReport1.FindObject('MVUserId').Memo.Text := UserId;
frReport1.FindObject('MVUserAddress').Memo.Text := Address;
frReport1.FindObject('MVOperatorId').Memo.Text := gOpID;
frReport1.FindObject('MVBigRMB').Memo.Text := ToBigRMB(gPlanSum);
frDBDataSet1.DataSet := frmDataModule1.ADOQuery1;
frReport1.Dataset := frDBDataSet1;
frReport1.Preview := frPreview1;
frReport1.ShowReport;
end;