Как нарисовать красный треугольник в Tfrxmemoview

отредактировано 17:08 Раздел: FastReport 4.0
Здравствуйте!
Вот на момент запуска отчета я прописала такой код
for i := 0 to AfrCurrentReport.ComponentCount -1 do
begin
if TComponent(AfrCurrentReport.Components) is TfrxMemoView then
if (TfrxMemoView(AfrCurrentReport.Components).TagStr <> '') and
(Pos('(SQL)',TfrxMemoView(AfrCurrentReport.Components).TagStr)>0) then //мемки, удовлетворяющие условию
TfrxMemoView(AfrCurrentReport.Components).Hint:= 'Click here for Drill Down';
//ToDo вместо показа хинта хочу, чтоб на этих мемках были нарисованы красные треугольнички (метки), такие как мы видим в дизайне на мемках, у которых есть скрипт. Я посмотрела даже исходники фаст репорта, но я графику и Canvas не очень понимаю. Подскажите, пожалуйста, с кодом, какой должен быть прописан отпимально, чтоб не тащить весь класс из frxDesgnWorkspace. Я чувствую, что это не сложно, не большой код, но как говорится, "когда изучали Canvas и TRect - я спала" :) Так что в данном случае вот не знаю как прописать/связать с компонентом TfrxMemoView этот самый Canvas и TRect и все это чтоб заработало :)
end;
Надеюсь на помощь. Заранее спасибо.

Комментарии

  • gpigpi
    отредактировано December 2012
    Самый простой вариант - при построении отчёта создавать TfrxPictureView в требуемом TfrxMemoView и загружать в него изображение красного треугольника
    procedure Memo2OnBeforePrint(Sender: TfrxComponent);
    var
      tr: TfrxPictureView;
      Memo: TfrxMemoView;
    begin
      Memo := TfrxMemoView(Sender);
      if Memo.TagStr <> '' then
        begin                         
          tr := TfrxPictureView.Create(Memo.Parent);
          tr.SetBounds(Memo.Left + 8, Memo.Top + 8, 18, 18);
          tr.Printable := False;                                                    
          tr.Pictur.LoadFromFile('tr.bmp');
        end;                
    end;
    
  • отредактировано 17:08
    Я остановилась на втором совете, который получила по емайл от группы поддержки фастрепорта. И решила сюда поместить их ответ, возможно, кому то тоже пригодится из пользователей.
    Вот ответ:"Можно нарисовать треугольник с помощью четырёх красных линий
    >
    code
    var
    Memo: TfrxMemoView;
    line1, line2, line3, line4: TfrxLineView;
    begin
    Memo := TfrxMemoView(Sender);
    if Memo.TagStr <> '' then
    begin
    line1 := TfrxLineView.Create(Memo.Parent);
    line1.SetBounds(Memo.Left + 2, Memo.Top + 2, 7, 7);
    line1.Printable := False;
    line1.frame.Color := clRed;
    line2 := TfrxLineView.Create(Memo.Parent);
    line2.SetBounds(Memo.Left + 3, Memo.Top + 3, 5, 5);
    line2.Printable := False;
    line2.frame.Color := clRed;
    line3 := TfrxLineView.Create(Memo.Parent);
    line3.SetBounds(Memo.Left + 4, Memo.Top + 4, 3, 3);
    line3.Printable := False;
    line3.frame.Color := clRed;
    line4 := TfrxLineView.Create(Memo.Parent);
    line4.SetBounds(Memo.Left + 5, Memo.Top + 5, 1, 1);
    line4.Printable := False;
    line4.frame.Color := clRed;
    end;
    end;
    "
    В заключении, хочу сказать. большое спасибо группе поддержки за помощь! Очень оперативно! Эту тему можно закрыть.

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

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