“OnAfterData” event

Top  Previous  Next

This event is triggered after a report object has been filled with the data from the source to which it is connected. Use this event for accessing either a DB field value or an expression contained in the object. This value is placed in the “Value” system variable which is available only in this event. So if two “Text” objects contain the expressions [Table1.“Field1”] and [<Table2.“Field1”> + 10] the values of these expressions can be used by referring to the “Value” variable for the objects:

 

PascalScript:

 

if Value > 3000 then

 Memo1.Color := clRed

 

C++ Script:

 

if (Value > 3000)

 Memo1.Color = clRed;

 

which is simpler than writing something like this:

 

PascalScript:

 

if <Table1."Field1"> > 3000 then

 Memo1.Color := clRed

 

C++ Script:

 

if (<Table1."Field1"> > 3000)

 Memo1.Color = clRed;

 

Using “Value” instead of an expression enables you to write one multi-purpose handler for the “OnAfterData” event which can be connected to several objects.

 

Please note something else - if an object contains several expressions (for example '[expr1] [expr2]') it is the value of the last expression that is transferred to the “Value” variable.

 

The “OnAfterData” event is ideal for calculating the height and width of objects such as “Text”. That is, if the exact height of a stretched “Text” object containing an expression is needed in a script you can use this code in the “OnAfterData” event:

 

PascalScript:

 

var

 MemoHeight: Extended;                                                        

begin

 MemoHeight := TfrxMemoView(Sender).CalcHeight;                                    

end;

 

C++ Script:

 

 float MemoHeight;

 MemoHeight = TfrxMemoView(Sender).CalcHeight;

 

If this code were used in the “OnBeforePrint” event the result will be the height of the object containing the expression before the expression is evaluated, and not its actual value on printing.