Написание собственного компонента
Как добавить переменную или массив в компонент собственного производства, что бы при этом значение этой переменной можно было вывести на печать. Что-то вроде
При предварительном просмотре в FValue и в элементах массива FArray всегда 0, хотя при формировании отчета там другие числа.
TfrxMyView = class(TfrxView)
private
FValue: Int64;
FArray: array [0..9] of Int64;
public
constructor Create(AOwner: TComponent); override;
procedure Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended); override;
procedure GetData; override;
published
property BrushStyle;
property Color;
property DataField;
property DataSet;
property DataSetName;
property Frame;
end;
implementation
{ TfrxMyoSignalView }
constructor TfrxMyView.Create(AOwner: TComponent);
begin
inherited;
end;
procedure TfrxMyView.Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended);
var
i: integer;
begin
BeginDraw(Canvas, ScaleX, ScaleY, OffsetX, OffsetY);
DrawBackground;
with Canvas do
begin
Draw(FX + 1, FY + 2, Bmp);
TextOut(FX + 1, FY + 2, PChar(IntToStr(FValue)));
for i:=0 to 9 do
begin
FY := FY + 20;
TextOut(FX + 1, FY + 2, PChar(IntToStr(FArray[i])));
end;
end;
DrawFrame;
end;
procedure TfrxMyView.GetData;
var
i: integer;
begin
inherited;
FValue := Random(100);
for i := 0 to 9 do
FArray[i] := Random(100);
end;
initialization
frxObjects.RegisterObject1(TfrxMyView, nil, '', 'Other', 0, 22);
end.
При предварительном просмотре в FValue и в элементах массива FArray всегда 0, хотя при формировании отчета там другие числа.
Комментарии
Переменные я заполняю из базы данных.
Так как Вы предложили я пробовал, свойство IsDataField в этот момент False и DataField = "", я даже на прорисовку ставил - эти поля не сохраняются
Да и сами этапы прорисовки непонятны. FastReport метод Draw вызывает несколько раз на один и тот же объект, причем он зачем-то его постоянно пересоздает.