Доступ к динамическому свойству

отредактировано 04:57 Раздел: FastReport 2.xx VCL
Добрый вечер.
Ответьте пожалуйста на мою проблему.
создается динамически отчет в dll:
var
preview:TFRReport;
pp:TFrUserDataSet;
b: TfrBandView;
Page: TfrPage;
bandd:TFRBand;
mem: array[1..1000] of TFRView;
procedure send(AppHandle:THandle;countpages,countcopy,countstack,sectors:integer;
formatpage:byte;massive:array of variant;sectors_:array of TLabel);stdcall;export;
var
t:integer;
begin
try
try
Application.Handle:=AppHandle;
preview:=TFrReport.Create(Application);
preview.DefaultCopies:=countcopy;
preview.PreviewButtons:=[pbZoom];
pp:=TFRUserDataSet.Create(Application);
pp.Name:='user';
pp.RangeBegin:=rbcurrent;
pp.RangeEnd:=reCount;
pp.RangeEndCount := countpages;
preview.DoublePass:=false;
preview.StoreInDFM:=true;
preview.ShowProgress:=false;
preview.Pages.Clear;
if formatpage = 1 then
printer.Orientation:=polandscape
else
if formatpage = 0 then
printer.Orientation:=poPortrait;
preview.Pages.Add;
Page := preview.Pages[0];
b := TfrBandView.Create;
b.Name:='all';
b.SetBounds(0, 5, 800, 600);
b.BandType := btMasterData;
b.Dataset := 'user';
Page.Objects.Add( ;) ;
for t:=1 to sectors do
begin
mem[t] := TfrMemoView.Create;
mem[t].Name:='sector'+inttostr(t);
mem[t].SetBounds(sectors_[t-1].Left, sectors_[t-1].Top,
sectors_[t-1].Canvas.TextWidth(sectors_[t-1].Caption)+12, sectors_[t-1].Height);
mem[t].Prop := frtaCenter;
if sectors_[t-1].Font.Style=[] then
mem[t].Prop := 0
else
if sectors_[t-1].Font.Style=[fsitalic] then
mem[t].Prop := 1
else
if sectors_[t-1].Font.Style=[fsbold] then
mem[t].Prop := 2
else
mem[t].Prop := 3;
mem[t].Prop:=sectors_[t-1].Font.Name;
mem[t].Prop:=sectors_[t-1].Font.Size;
mem[t].Prop:=sectors_[t-1].Font.Color;
if sectors_[t-1].Color = clblack then
sectors_[t-1].Color:=clwhite;
mem[t].FillColor:=sectors_[t-1].Color;
mem[t].x:=sectors_[t-1].Left;
mem[t].Memo.Add('[var'+inttostr(t)+']');
frvariables:=inttostr(t);
Page.Objects.Add(mem[t]);
end;
preview.ShowReport;
Application.ProcessMessages;
Application.Handle:=0;
finally
preview.Free;
pp.Free;
end;
except
MessageBox(Application.Handle,'Невозможно показыть предварительный просмотр макета!',
'Ошибка в программе!',mb_ok+mb_iconWarning);
end;
end;

exports
send;
begin
end.

Как мне получить доступ к свойству Band,чтобы
выйти на процедуру BeginBand для preview(моего созданного динамически компонета)
для изменений
frvariables каждой переменной.
Желательно с примером.
Заранее спасибо.





Комментарии

  • отредактировано 04:57
    Попробуйте так:
    for i:=0 to frReport1.Pages.Count-1 do
    for j:=0 to frReport1.Pages.Pages[i].Objects.Count-1 do
    if TfrView(frReport1.Pages.Pages[i].Objects[j]).ClassName ='TfrBandView' then
    begin
    Band:= TfrBandView(frReport1.Pages.Pages[i].Objects[j]);
    ...
    ...
    ...
    end;
    
    

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.