Небольшая проблема с цветами

отредактировано 00:55 Раздел: FastReport 3.0
Программа для выдачи пропусков, заголовок пропуска имеет свой цвет в зависимости от организации в которой работает человек.
когда я выбираю одного работника( в свойствах frxDBDataset1
Range Begin и Range End = rbCurrent, reCurrent), в предварительном просмотре работает все идеально, цвета какие надо!. Но когда я делаю в Range Begin = rbFirst, Range End = reLast, чтобы он печатал всех кто в базе, то в предварительном просмотре свойство цвета в компоненте Memo не меняется, остается такое же как я нарисовал в Designer'e.
В общем такой код
    getdir(0, dir);
    frxReport1.LoadFromFile(dir+'\card.fr3');
    memo2:=frxReport1.FindObject('Memo3')as TfrxMemoView;
    if TbPersonal['Color']=0 then memo2.Color:=clBlack;
    if TbPersonal['Color']=1 then memo2.Color:=clMaroon;
    if TbPersonal['Color']=2 then memo2.Color:=clGreen;
    if TbPersonal['Color']=3 then memo2.Color:=clNavy;
    if TbPersonal['Color']=4 then memo2.Color:=clPurple;
    if TbPersonal['Color']=5 then memo2.Color:=clTeal;
    if TbPersonal['Color']=6 then memo2.Color:=clGray;
    frxReport1.ShowReport;
TbPersonal это база из которой выводятся данные на экран.

Как решить проблему?

Комментарии

  • gpigpi
    отредактировано 00:55
    Изменяйте цвет Мемо3 в скрипте отчёта в событии OnBeforePrint бэнда, на котором расположено мемо, или самого мемо
  • отредактировано 00:55
    Ни разу не использовал скрипты...
    а примерчика нету у вас?
  • отредактировано 00:55
    Твоя ошибка в неправильном понимании механизма работы - загрузив шаблон, ты нашел в нем мемо, поменял (или даже нет) цвет в шаблоне и только потом начал формирование отчета.
    Правильный алгоритм, как и сказал gpi, нужно в момент формирования отчета (в скрипте) для каждой строки данных устанавливать нужный цвет мемо.
    Как работать со скриптом смотри в документации.
  • gpigpi
    отредактировано 00:55
    Скрипт для отчёта Simple list из FRDemo
    Создаётся обработчик OnBeforePrint для Memo8 (название компании). Мемо в первой строке выделяется красным цветом
    procedure Memo8OnBeforePrint(Sender: TfrxComponent);
    begin
         if <Customers."Company">='Action Club' then Memo8.Color:=clRed
         else
           Memo8.Color:=clNone;
    end;
    
  • отредактировано March 2006
    Спасибо огромное!
    получилось!

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

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