188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
||||||
1 | ||||||
Редактор: создание и настройка печатных форм01.03.2016, 21:32. Показов 2235. Ответов 18
Метки нет (Все метки)
Многие разработчики баз данных нередко сталкиваются с вопросом вывода результатов работы своего программного обеспечения в виде выходных печатных форм. Для этих целей разработчики Delphi и C++ Builder нередко используется FastReport.
Не уверен как сейчас, но еще несколько лет назад возможности FastReport были ограничены и не позволили сформировать необходимые формы отчетов (Речь идет о кадровой программе с реализацией возможностей создания всевозможных форм документов, справок, приказов, контрактов, статистических отчетов). А именно, описать обработку данных с помощью формул, изменить падежную форму, осуществить редактирование и форматирование результата как в Word, выполнить экспорт данных в Word и Excel и прочее. Именно тогда и задумался Редактор с объединением возможностей Word и Excel. С одной стороны удобное форматирование данных, а с другой возможность описания обработки с помощью формул. На рисунках представлено рабочее окно программы в режиме редактирования отчетов. В верхней части – главное меню и панель инструментов, слева – инспектор объектов, внизу – список переменных и редактор скриптов. В остальной части рабочее поле чем-то напоминающее интерфейс MS Word, где на странице документа, располагаются графические объекты: текст, прямоугольник, изображение и панель. Подобно FastReport, панель (голубой и зеленые объекты) используется для описания структуры записи. Аналогично Excel, в текстовые объекты заносятся формулы, а с помощью прямоугольников описывается структура таблицы. Для упрощения описания логических выражений в Редактор встроен обработчик скриптов. Разработчик может сам описать необходимый функционал с помощью функций и затем использовать их в формулах отчета. Имеется возможность подключения функций из внешних файлов (#include ".\include\*.d"). Синтаксис скриптов напоминает язык C++ с некоторым упрощением и дополнением. Поддерживаются простые типы данных (bool, int, double, date и др.) и базовые операции над ними, циклы (for, while), условия (if, switch-case), описание классов (наследование). Описание назначения функций может сопровождаться встраиванием в комментарии ключевых слов для отображения в списке функций подробных сведений.
Результат обработки выше представленных шаблонов можно видеть на следующих рисунках. Пользователь может просто ознакомиться с документом, экспортировать данные в Word или Excel, распечатать на принтер или в pdf-файл. Для тех кто не определился с выбором из имеющихся средств создания отчетов или не совсем доволен тем, что использует, предлагаю рассмотреть использование Редактора в составе Вашего программного обеспечения. Для этого достаточно единственного файла Editor.dll и встраивания специального вызова. Установка вспомогательного обеспечения, как для разработчика, так и для пользователя не требуется. Как отмечено Редактор используется в составе разработанного программного обеспечения, а, следовательно, для его использования другими пользователями пришлось закрыть некоторые возможности дабы избежать появления ошибок. Со временем полный функционал будет раскрыт, а возможно появятся и новые реализации идей пользователей. В имеющейся версии можно создать произвольный табличный отчет с различными способами группировки и сортировки данных, осуществить подведение промежуточных и окончательных итогов, обработать статистические данные. В основном Редактор использовался для обработки таблиц баз данных Paradox и MsSql, следовательно, проблем работы с ними возникнуть не должно. Однако, так как имеются сложности прямого использования AnsiString-объектов в release-версии при обмене данными между приложением и dll – в примере используется специальный объект-посредник DLocalSet. Объект является "оберткой" над stdcall функцией обратного вызова. Следовательно, желающие смогут использовать Редактор для обработки произвольных данных, описав структуру их хранения в Borland-формате в любых языках программирования под Windows. В примере представлена обработка данных объектов наследованных от класса TDataSet. Подобная реализация должна нормально работать в различных версиях C++ Builder. Для Delphi код потребуется немного изменить. Кроме этого имеется возможность автономного использования редактора путем вызова из командной строки. Для запуска редактора и формирования отчета используется шаблон (*.dlt). Для примера можно выполнить следующую команду Editor.exe HelloWorld.dlt В прикрепленном архиве Editor.rar содержится пример подключения библиотеки Editor.dll на C++ Builder. Подключение в других языках программирования должно быть похожим, но если возникнут проблемы - будем их решать. Шаблоны документов хранятся в файлах Reports\*.dlt Функции автоматизации обработки данных хранятся в файлах Include\*.d example.d - API для использования в примерах; editor.d - функции для работы с переменными редактора; inter.d - набор базовых функций. Вроде бы все. Готов выслушать критику и вопросы всех заинтересовавшихся.
3
|
01.03.2016, 21:32 | |
Ответы с готовыми решениями:
18
Создание печатных форм VBA в Excel. Создание печатных форм Создание новых печатных форм или редактирование старых 8.2 Отказ печатных форм |
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,220
|
|
04.03.2016, 00:22 | 2 |
Выглядит солидно, единственное что бросилось в глаза - отсутствие имени у объектов по умолчанию... и имена объектов - не уникальны, т.е. не понятно вообще зачем они Имея уникальные имена, можно сделать простую навигацию по многостраничному документу кстати можно было бы добавить кнопки последняя страница и первая страница, ну а так, кроме глюков и неработающих функций с непривычки особо корявостей не заметно
0
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
04.03.2016, 00:38 [ТС] | 3 |
vlisp, В представленных примерах имена объектов и не нужны. В реальных отчетах они использовались для того чтобы вписывать значение не в сам текстовый объект шаблона в виде формулы, а заполнять его в процессе обработки данных путем описания значения с помощью скрипта. Например имеется некоторая статистическая форма, в которой каждой ячейке (текстовом объекте) присвоено имя по которому значение объекта заполняется обработчиком скрипта. Чуть позже нарисую пример и выложу. А пока для ознакомления это выглядит примерно так:
0
|
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,220
|
|
04.03.2016, 01:47 | 4 |
Я про это и говорю, имя объекта должно быть уникальным, причем сразу оно должно быть установлено, чтобы не было путаницы. Имена можно изменять, но нельзя присваивать уже существующее имя... Это же нормальная практика
в основном ругается на отсутствие BDE... Кстати BDE сейчас мало у кого стоит, так что нужно в дистрибутив его включать Вот еще: при открытии нового файла, старый не сохраняется и нет окошка сохранения... то есть велик риск потери данных Добавлено через 8 минут вот кстати еще... имя текущего файла не отображается в заголовке Можно было бы добавить переход на первую страницу и на последнюю
1
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
04.03.2016, 01:59 [ТС] | 5 |
vlisp,
Про открытие файла - вполне возможно. Исправлю. Просто в существующей программе имена файлов создаются не Редактором, а управляющей программой. Эту функцию сделал здесь, но не доделал. Исправлю Добавлено через 6 минут
0
|
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,220
|
|
04.03.2016, 02:14 | 6 |
если, хотите чтоб вашей программой пользовались и тем более платили за нее, нужно учиться удовлетворять пользователя... все его капризы нужно обдумывать и по большей части внедрять, есть общепринятая стилистика приложений для масс и ее нужно придерживаться, так как массы учитываются туповатыми, то все должно быть предельно просто и однозначно... не должно быть никаких если, потому-что, в основном
просто ради интереса... насколько сложно сделать программу многодокументной насчет интереса, если вам это интересно, если сами пользуетесь, то продолжайте развивать программу... конечно сейчас куча оффисов с лучшим функционалом, но может кому-то будет проще ваша программа
0
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
04.03.2016, 02:24 [ТС] | 7 |
vlisp, в целом я и хочу получить поддержки от разработчиков различных языков программирования. Просто нужно было с чего-то начать и так как Редактор был написан на C++Builder, следовательно, и объяснить что к чему там было проще.
0
|
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,220
|
|
04.03.2016, 10:45 | 8 |
многодокументной - это когда много файлов открыто в программе одновременно
что меня еще смутило, так то, что в режиме просмотра программа выглядит намного эффектней
0
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
04.03.2016, 17:28 [ТС] | 9 |
0
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
05.03.2016, 01:24 [ТС] | 10 |
Для демки переделал обработку данных путем загрузки из xml файла (Example.xml). Теперь BDE ставить не нужно.
В демке добавил стат-отчет в котором отображаются сведения о принятых и уволенных сотрудниках за отчетный год с группировкой данных по возрасту на дату приема/увольнения. Шаблон и результат выглядят примерно так
0
|
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,220
|
|
05.03.2016, 02:03 | 11 |
как раз то, о чем я писал, без имени файла в заголовке трудно найти нужный файл...
и еще, если на машине не установлен офис, то нужно как-то поделикатней это объяснять... а то такие окошки пугают пользователя
1
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
06.03.2016, 03:35 [ТС] | 12 |
vlisp,
Кстати, для разработчика всегда есть возможность узнать имя файла путем выбора меню "Файл->Имя документа" или узнать полный путь к файлу открыв его свойства "Файл->Свойства"
0
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
06.03.2016, 03:43 [ТС] | 13 |
Обновил архив
К предыдущему примеру "Стат-отчет", добавил пример "Стат-отчет + анализ". В данном отчете показано как пользователь может кликнув по интересующей его цифре два раза увидеть вспомогательную информацию. Например, какие люди вошли в подсчет конкретного показателя. На реальной базе в 1000 человек такая возможность всегда спасала. На поиск ошибки и отладку алгоритма уходило значительно меньше времени В прикрепленном архиве добавил исходники (.\src\MySql\) с примером чтения данных MySql базы с помощью библиотеки libmysql.dll Теперь разработчики Visual C могут попробовать подключить к редактору свои базы.
0
|
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,220
|
|
06.03.2016, 13:43 | 14 |
Затем, что я хотел получить то, что у вас на картинке и мне пришлось открывать все файлы в папке, и я все равно не увидел такую картинку, у меня таблица не заполняется в просмотре.
Кстати новому документу нужно присваивать имя и оно должно быть уникальным: Отчет1, Отчет2 ... Обычно в заголовке окна пишут полный путь к открытому файлу, а не относительный, либо только название файла, и это должно быть настраиваемо, более того, если в заголовке полный путь слишком длинный, его надо еще и правильно сократить, чтоб он поместился и был понятен Напишите "Не удалось выполнить запуск <...>", где <...> - Программа, которую не удалось запустить, а то у вас в одном место одно, в другом месте другое и с ошибкой... Грамматические ошибки, кстати очень сильно убивают интерес... Сделайте поля размеров страниц в окне свойства страницы активными только при установке формата страницы Другой Вот еще... В Файле PersonalStat при редактировании объектов в таблице прямоугольная область редактирования смещается, становится длинной и не отображает предыдущее содержание, если это не строка
0
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
06.03.2016, 20:10 [ТС] | 15 |
vlisp,
0
|
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,220
|
|
06.03.2016, 21:33 | 16 |
не запускается, просит библиотеку MIDAS
Посмотрите Notepad++ Нужно обращать, это мелочи, но но их замечают первыми Длина прямоугольника текстового объекта в режиме редактирования должна быть адаптивной... уменьшаться и увеличиваться в зависимости от содержания. К тому же поле не должно убегать от нужной ячейки таблицы
1
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
06.03.2016, 23:06 [ТС] | 17 |
vlisp,
0
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
06.03.2016, 23:25 [ТС] | 18 |
Создал себе виртуалку без установки какого-либо другого ПО. Прежде чем выложить архив, буду теперь тестировать на ней. Действительно без midas.dll Example.exe не запускался. Прикрепляю его ниже. Позже включу в состав архива демки
0
|
188 / 41 / 12
Регистрация: 22.02.2016
Сообщений: 149
|
|
07.03.2016, 03:08 [ТС] | 19 |
Все приведенные ранее примеры отчетов были статическими. А именно, разработчик должен настроить желаемую печатную форму и предоставить средства вызова пользователю, например с помощью главного меню или управляющих элементов. Однако, не всегда предложенная пользователю форма его устраивает. То колонку нужно добавить, то изменить группировку или сортировку данных. На все случаи отчеты не создать.
Для упрощения их создания в Редактор встроен "Конструктор отчета". Вызвав его пользователь может самостоятельно настроить необходимый набор колонок, указать нужную сортировку/группировку данных, выполнить форматирование страницы. Кроме этого, пользователь может самостоятельно создать список часто используемых вариантов отчета и загружать их по мере необходимости Вот несколько вариантов задания параметров отчета Выбор/удаление колонок выполняется двойным щелчком по соответствующему наименованию. Название отчета, сортировка и группировка данных задаются в соответствующих объектах. Колонки с зелеными ярлыками (Возраст) означают, что их значение зависит от значения даты указанной в верхнем правом углу. Переключение в Портретный/альбомный формат листа выполняется двойным щелчком по пиктограмме в виде страницы Результат формирования отчетов можно посмотреть ниже Файл конструктора отчетов находится по пути ".\Reports\Example.dtc" Пример вызова "Конструктора отчета" описан в исходниках ".\src\*.*"
0
|
07.03.2016, 03:08 | |
07.03.2016, 03:08 | |
Помогаю со студенческими работами здесь
19
Перенос печатных форм с КА в УТ 11 Параметры печатных форм Макеты печатных форм Редактор: создание и настройка отчетов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |