2017-08-12 13 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を持ってはいけませんが、 'Text'ではなく、' Value'プロパティで設定してください。もしそうならば、それは文字列ではなくその式の整数データ型を期待できるバリアント型でなければならないので、 '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; 

チェック見つかった制御が同様に欠落している場合。そしてフロートへの変換は必要ありません。 は、floatに変換できる単なる文字列にすることができます。

+0

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

+1

@gpi本当に? 'Integer'を' WideString'に割り当てますか?とんでもない。 mybeは 'Memo.Text:= '[' + Edit1.Text + ']'; 'を意味し、それは本当です。 – Sami

+1

はい、私は 'Memo.Text:= '[' + Edit1.Text + ']'' – gpi