Помощь новичку

отредактировано 16:57 Раздел: FastReport 4.0
Новичок, об этом стоит упомянуть в первую очередь.
Хотел бы получить помощь по 2м вопросам (все написано на Pascal):
1.Нужно заменить значения в отчете.

по коду, почему то не ругается) но не заменяет

procedure Memo1OnBeforePrint(Memo: TfrxMemoView);
var Memo10 : string;
begin
memo10 := (<Tmp."TypeEquN">);
if (<Tmp."TypeEquN">) = 'UPS' then
Memo10 := 'ИБП'

end

что не так?

2. как обрезать строку по количеству символов (в идеале хотелось бы что бы из поля удалялось все кроме цифр).
суть то ясна, но вот в функции не могу разобраться. Глупый но все же вопрос, функции должны объявляться так же как и процедуры?

Комментарии

  • отредактировано 16:57
    1) Внутри самого Memo10 написать [iif(<Tmp."TypeEquN"> = 'UPS', 'ИБП', <Tmp."TypeEquN">)]
    Обработчик убрать. Я всегда пишу через iif.
    2)
    Memo:
    [MyFunction('некоторые данные')]
    скрипт
    перед "begin end." вставить
    function MyFunction(s:String):String;
    var
      i:integer
    begin
      for i := 0 to length(s) do
      begin
        //код
      end;
      Result := s;
    end;
    
    это элементарно
  • отредактировано 16:57
    написал:
    Внутри самого Memo10 написать [iif(<Tmp."TypeEquN"> = 'UPS', 'ИБП', <Tmp."TypeEquN">)]

    Работает но значения не меняет, в чем может быть проблема???
    Как один из нюансов о которых я не упомянул, возможно он и не повлияет, я брал за основу готовый отчет, создавал копию и менял уже под свои нужды, возможно ли что то может, как бы правильно выразиться "перекрывать" результат из Бэндов или может что то в этом роде?

    Хочу также выразить Огромную Благодарность, за ответ, потому как я вижу форум не очень, так сказать "живой", или возможно мне просто так показалось...!!!....
  • отредактировано 16:57
    Пришли файл отчёта и демо-пример программы (желательно с БД).

    Оффтоп. Форум живой, но из-за администраторов, которые улетели в другую Галлактику, настроение у многих упало.
  • отредактировано November 2014
    С БД к сожалению не могу...
    За основу брал - Список инвентарных номеров: Сортировка по рабочему месту
  • отредактировано 16:57
    Все написано правильно вроде, скриптов лишних нет, наследования отчётов тоже. Более точно могу сказать с базой данных. Всю базу можешь не присылать - пришли с одной таблицей и 2-мя записями: с одной, которая проходит, и со второй, которая не проходит.

    Не понятная твоя фраза "Работает но значения не меняет". Если iif не меняет значения, то он и не работает!

    Сделай локальную копию БД с двумя тестовыми записями.
  • gpigpi
    отредактировано 16:57
    Пришлите сохранённые страницы превью (fp3), сформированные с выражением
    [Tmp."TypeEquN"][iif(<Tmp."TypeEquN">= 'Мониторы', 'ИБП', <Tmp."TypeEquN">)]
    в мемо
  • отредактировано 16:57
    А можно ли у memo изменить цвет по условию его содержимого? Просто если вставляю в код условие, то меняется цвет всех memo. К примеру, при построении отчета, данное memo отрисовывается столько раз сколько в базе документов, но если срабатывает условие то окрашиваются все memo, а не только то которое относится к конкретному документу? Не пойму на какой объект и какое событие вешать. Или так сделать вообще не реально?
  • gpigpi
    отредактировано 16:57
    Покажите Ваш скрипт
  • отредактировано 16:57
    gpi написал: »
    Покажите Ваш скрипт
  • отредактировано December 2014
    а где else?
    Он же у тебя один раз красится в красный и таким остаётся навсегда.
    надо так:
    if <vip."zzz"> = 1 then
      Memo55.Color := clRed;
    else
      Memo55.Color := clWhite;
    
    А вообще этот случай очень хорошо документирован в руководстве пользователя FastReport. Двойной клик по Memo - вкладка "Выделение".
  • отредактировано 16:57
    Nightmareterrible написал: »
    а где else?
    Он же у тебя один раз красится в красный и таким остаётся навсегда.
    надо так:
    if <vip."zzz"> = 1 then
      Memo55.Color := clRed;
    else
      Memo55.Color := clWhite;
    
    А вообще этот случай очень хорошо документирован в руководстве пользователя FastReport. Двойной клик по Memo - вкладка "Выделение".
    Пристыдили elseм))) Согласен - тупо))) Точка с запятой лишняя правда. Насчет руководства - подскажите где взять полное (с софтом, использующим Report print идет весьма посредственная документация версия 3.24.6) . Насчет вкладки по memo не совсем понял. Повесил if else на событие onbeforeprint объекта masterdata - вроде работает.
  • отредактировано 16:57
    http://g.zeos.in/?q=%D1%80%D1%83%D0%BA%D0%...0fastreport%204

    Раздел "Форматирование значений", подраздел "Условное выделение"
  • отредактировано 16:57
    Спасибо

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

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