Ограниченный набор функций в FastScript FastReport
У меня очень много таких отчётов, которые требуют программирования прямо в скриптах обработчиков событий-функций, не применяя 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
То есть требуется в конструкторе (режиме дизайнера) в бэндах, мэмо использовать свои коды. Но 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
Комментарии
- Набор ф-й в FS достаточен для большинства применений. Чего-то не хватает (так бывает всегда) - пожалуйста в developer manual, "Подключение собственных функций к отчету". Кстати, TCanvas.TextWidth есть...
- FS понимает спецсимволы, например:
Memo3.Text := 'memo3' + #13#10 + 'text';
Вы пишете, что есть TCanvas.TextWidth, он только есть в программировании через Дельфи. А мне надо напрямую в Дизайнере или конструкторе отчёта в FastScripte вызывать. Есть разница. Не буду же управлять из Дельфи. Потому что есть один модуль - dll-библиотека, которая содержит только конструктор FastReporta. Только мы в нём пишем скрипты на FastScript и создаём отчёты. А вот из-за этого не можем воспользоваться Canvas.textWidth. Дело не в достаточности построения приложений. Разбивка на части по N штук с созданием child-бенда тоже популярная задача
Как мне заменить такой красивый компонент TfrRoundRectView в новой 3-ьей версии?
Я пытался применить аналог TfrxShapeView (пример отчёта "Rotatiom, fills and shapes" New features), но не мог понять, почему не работает свойство Frame.ShadowColor, то есть не показывается тень. А для TfrxMemoView работает. Что это такое, глюк? Почему с первого раза компоненты не должны гладко отображать изменения, а только со второго и какого-то пинка? Так и было вчера с виртуальным датасетом для бэнда МастерДетайл.
И не представляю, как конвертировать отчёты из FR2X в FR3, где мне взять нормальный конвертер? И мне приходится конвертировать через конструктор демо версии FR2.52, сохраняя как *.fr3. Он мне TfrRoundRectView заменяет
на TfrxRoundRectView, добавляя букву X. Это не нормально же... И на что мне его заменять вручную?
Если тебе мало встроенных в FR3 функций, то :
1) Можешь недостающие легко сделать сам
2) Воспользоваться frxAddFunctionLibrary. В ней содержиться еще где то 35 функций.