Ограниченный набор функций в FastScript FastReport

отредактировано 16:37 Раздел: FastReport 3.0
У меня очень много таких отчётов, которые требуют программирования прямо в скриптах обработчиков событий-функций, не применяя Delphi.
То есть требуется в конструкторе (режиме дизайнера) в бэндах, мэмо использовать свои коды. Но FastScript содержит совсем бедный ограниченный набор функций, почему бы их нельзя поимпортировать из Delphi?
Например, нет такой функции как Canvas.TextWidth(''''). Да и FastScript ругается, когда я хочу написать подобное "if Memo3.Text = '#13' (символ перевода строки) then", то он ругается. Вообще ФастСкрипт не понимает спецсимволы, он тока понимает 'a'..'m', а '#13', '#10' не хочет воспринимать.
Нам часто требуется обрабатывать полученные на входе строковые данные (длиной 256 и более до 1024 символов, которые содержат символы #10, #13) , и их выводить в Memo высотой 10 строк частями по 10 строк. Например, на вход поступила строка 'qwe#13rtytuiop#13pas dfg hjk lzxc vbnm,', надо вывести её так:

Memo1.Text := 'qwe';
Memo2.Text := 'rtytuiop'
Memo3.Text := 'pas dfg hjk' (P.s. здесь нет #13, но строка не влезает и отсюда перевод на другое мемо)
Memo4.Text := 'lzxc vbnm,'

Как я это сделаю??? Вынужден был написать чисто эмпирический алгоритм разбивки текста и вывода... Работает более-менее, но тяжко... Обидно, что не понимает #13, #10 и не имеет Canvas.textWidth.

Начальство дало мне бабки на покупку новой версии 3. Я скачал пробную версию и понял, что там ничего нет для решения моих проблем, и во-вторых, 3 версия сыроватая и кучи ошибок имеет.

Интересно, что мне посоветуют разработчики FastReport

Комментарии

  • отредактировано 16:37
    Поехали по пунктам.
    - Набор ф-й в FS достаточен для большинства применений. Чего-то не хватает (так бывает всегда) - пожалуйста в developer manual, "Подключение собственных функций к отчету". Кстати, TCanvas.TextWidth есть...

    - FS понимает спецсимволы, например:
    Memo3.Text := 'memo3' + #13#10 + 'text';
  • отредактировано 16:37
    Александр!
    Вы пишете, что есть TCanvas.TextWidth, он только есть в программировании через Дельфи. А мне надо напрямую в Дизайнере или конструкторе отчёта в FastScripte вызывать. Есть разница. Не буду же управлять из Дельфи. Потому что есть один модуль - dll-библиотека, которая содержит только конструктор FastReporta. Только мы в нём пишем скрипты на FastScript и создаём отчёты. А вот из-за этого не можем воспользоваться Canvas.textWidth. Дело не в достаточности построения приложений. Разбивка на части по N штук с созданием child-бенда тоже популярная задача
  • отредактировано 16:37
    Нет, я писал именно о том, что в FS есть TCanvas и некоторые (не все) методы и свойства. Вот, например, только что проверил в демке FR3:
    procedure Memo3OnBeforePrint(Sender: TfrxComponent);
    var
      Bmp: TBitmap;
    begin
      Bmp := TBitmap.Create;
      with bmp.Canvas do
      begin
        Font := Memo3.Font;
        Memo3.Width := TextWidth(Memo3.Text);
      end;
      Bmp.Free;
    end;
    
  • отредактировано October 2004
    Спасибо большое, я попробую.
    Как мне заменить такой красивый компонент TfrRoundRectView в новой 3-ьей версии?
    Я пытался применить аналог TfrxShapeView (пример отчёта "Rotatiom, fills and shapes" New features), но не мог понять, почему не работает свойство Frame.ShadowColor, то есть не показывается тень. А для TfrxMemoView работает. Что это такое, глюк? Почему с первого раза компоненты не должны гладко отображать изменения, а только со второго и какого-то пинка? Так и было вчера с виртуальным датасетом для бэнда МастерДетайл.
    И не представляю, как конвертировать отчёты из FR2X в FR3, где мне взять нормальный конвертер? И мне приходится конвертировать через конструктор демо версии FR2.52, сохраняя как *.fr3. Он мне TfrRoundRectView заменяет
    на TfrxRoundRectView, добавляя букву X. Это не нормально же... И на что мне его заменять вручную?
  • отредактировано 16:37
    Такого компонента в FR3 нет. Вижу, по просьбам трудящихся придется вернуть... Если получится, конечно.
  • Stalker4Stalker4 123
    отредактировано 16:37
    Hill

    Если тебе мало встроенных в FR3 функций, то :
    1) Можешь недостающие легко сделать сам
    2) Воспользоваться frxAddFunctionLibrary. В ней содержиться еще где то 35 функций.

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

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