2017-08-12 147 views
1

我读过this manual,并按照它,但highlighting无法正常工作。Delphi-FastReport VCL 5有条件突出显示

我有什么?

  • 创建新的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; 
+0

你的'TfrxMemoView'对象是否有数值'Value'?它的截图似乎是空的。 – Victoria

+0

@Victoria我将'TEdit'组件的值发送到'TfrxMemoView'组件,将更新问题。 – Sami

+0

手动没有FastReport,但不应该是应该设置的“Value”属性(而不是'Text')?如果是这样,它应该是变体数据类型,可能期望该表达式的整数数据类型而不是文本,所以也许你需要写'Mem.Value:= StrToInt(Edit1.Text);'。 – Victoria

回答

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; 

在这一个检查,如果发现控制缺失也是如此。在那里不需要转换为浮动。 可以只是一个字符串可以浮动。

+0

或者使用Memo.Text:='['+ StrToInt(Edit1.Text)+']';' – gpi

+1

@gpi真的吗?将'Integer'分配给'WideString'?没门。 mybe you mean'Memo.Text:='['+ Edit1.Text +']';'这是真的。 – Sami

+1

是的,我的意思是'Memo.Text:='['+ Edit1.Text +']'' – gpi