Delphi-FastReport VCL 5条件突出显示

时间:2017-08-12 18:13:23

标签: delphi delphi-10-seattle fastreport

我已阅读this manual并关注它,但highlighting无效。

我有什么?

  • 创建新的VCL应用程序。

  • 在表单中删除TEditTButton个组件(传递值)。

  • 在表单上删除TfrxReport

  • 以设计模式打开报告。

  • 在报告页面中删除ReportTile个频段。

  • 在ReportTitle频段中删除TfrxMemoView

  • 添加条件:

     1- Value <= 0 -> Red color
     2- Value > 0 -> Green color
    

备忘录的填充色仍为Black,即使值为>0<=0

问题:

为什么这种情况不起作用?以及如何使条件有效?

enter image description here

更新

该值已传递给TfrxMemoView组件:

procedure TForm1.Button1Click(Sender: TObject);
Var Mem : TfrxMemoView;
begin
Mem := frxReport1.FindObject('Memo1') as TfrxMemoView;
Mem.Text := Edit1.Text;
frxReport1.ShowReport();
end;

1 个答案:

答案 0 :(得分:0)

未应用任何规则,因为属性仍为 NULL 。要从Delphi代码中指定常量值,可以编写常量表达式,例如:

procedure TForm1.Button1Click(Sender: TObject);
var
  Memo: TfrxMemoView;
begin
  Memo := frxReport1.FindObject('Memo1') as TfrxMemoView;
  Memo.Text := Format('[%s]', [Edit1.Text]);
  frxReport1.ShowReport;
end;

在上面的代码中,我省略了检查是否找到了控件。而且,您需要小心输入文本。它只接受格式的浮点值,该格式不会在小数分隔符中与 ExpressionDelimiters 属性中定义的分隔符冲突。

或者只需设置属性:

procedure TForm1.Button1Click(Sender: TObject);
var
  Memo: TfrxMemoView;
begin
  Memo := frxReport1.FindObject('Memo1') as TfrxMemoView;
  Memo.Text := Edit1.Text;
  Memo.Value := StrToFloat(Edit1.Text);
  frxReport1.ShowReport;
end;

在这一项中,检查是否找到了控件也是如此。那里没有必要转换为浮动。 可以只是一个可转换为float的字符串。