Maple4 Report Builder (для Visual FoxPro 9!)
реклама
В общем, по роду моей работы, мне довольно часто приходится формировать отчеты, договора, акты, приложения и другие документы.
Стандартным Report Bulder-ом формировать зарекся, через управление Word и Excell - довольно муторно...
В общем, вот новая версия редактора.
Изменился интерфейс визуального редактора - теперь можно обращаться к свойствам ячейки без открытия контекстного меню. Свойства доступны при клике по ячейке.
Редактирование свойств ячейки из формы, "почти как в Excell", т.е.:
Изменение шрифта (из тех, что установлены в системе), размера и атрибутов (Bold,Italic,Underline), выравнивания по ширине и высоте, назначение границ ячейке - это теперь можно делать прямо из экранной формы.
Для ячейки можно задать значения Default по каждому свойству, основные значения и любые другие, а так же задать функции для управления свойствами.
При переходе в другую ячейку (при клике основной кнопкой или дополнительной), активная ячейка отображается красными границами.
Идеология m4RB:
Каждый Report имеет следующие зоны (в дальнейшем - Хедеры ):
Title (Начало отчета), Summary (Конец отчета), Page Header (Начало страницы), Page Footer (Конец страницы) и Detail (Данные).
Использовать их пользователем или нет - личное дело пользователя, но они есть и всегда будут, ХОТЯ БЫ по одному каждого вида в Report-е.
Хедер управляет строками, которые в него входят:
Печатать ли Хедер
Например, программа при формировании распечатает все Detail (по умолчанию), или только те, которые удовлетворяют условию.
В примере можно увидеть, что при формировании распечатывается общий Detail по клиенту и один, в зависимости от типа договора (Интернет это или Телефония).
Начинать ли печатать Хедер с новой страницы
Порядок печати определяется расположением Хедеров в отчете.
Можно перемещать Хедеры Вверх/Вниз (только в пределах типа, т.е. нельзя, например, Detail расположить выше Title)
Можно удалять Хедеры (удаляются так же все строки в Хедере), НО нельзя вообще удалить Хедер, если он один в отчете.
Кроме рассмотренных Хедеров, есть еще один: Group
Его применение необходимо в случае группировки данных.
Нужно понимать, что данные УЖЕ ДОЛЖНЫ быть отсортированы, аналогично, как со стандартным Report Builder-ом
Group должен принадлежать какому-либо уровню (ROOT) сортировки, т.е. не может быть Group без уровня, просто так.
При добавлении нового уровня сортировки (ROOT), добавлется одновременно Group для начала и Group для конца.
Group Start срабатывает при начале новой группы, Group End - при конце группы.
Может быть несколько Group , но должен быть хотя бы один Group (Group Start) для каждого уровня для начала и хотя бы один (Group End) для конца.
В примере, данные отсортированы по городу и услуге.
Коротко по пунктам контекстного меню:
Check/UnCheck - выделить ячейку или снять выделение (если была до этого выделена)
Checked Cells/Group - выделенные ячейки объединить в одну. Каждая из выделенных ячеек не должна быть в группе, и, так же, все выделенные ячейки должны принадлежать одному Хедеру.
Checked Cells/Group - выделенные ячейки разгруппировать
Checked Cells/Clear - очистить выделенные ячейки (привести в состояние Default все свойства ячейки)
Edit/Cell/Field - редактирование значения ячейки (доступ из формы - двойной клик по ячейке)
Edit/Cell/Click - свойство, отвечающее за генерацию реакции на клик. Пример можно посмотреть в отчете по Телефонам или по IP (саму реакцию можно посмотреть, кликнув в сгенеренном отчете по телефону или IP - откроется детализированный отчет)
Edit/Cell/Style - свойство, отвечающее за дополнительное управление стилем ячейки (CSS)
Edit/Cell/Caption - что показывается в отчете вместо значения ячейки (При снятом флажке Hide Values всегда показывается значение ячейки, не зависимо от того, введено Caption или нет). Очень удобно, если данные загромождают отчет, ввести для каждой ячеки Caption - разница бросается в глаза.
Для изменения свойств Edit/Border/ и Edit/Font/ можно напрямую обращаться через экранную форму (она появляется при клике по ячейке).
В качестве значений свойств (для Edit/Border/ и Edit/Font/ ) можно использовать функции FoxPro или программный код FoxPro (в случае программного кода ОБЯЗАТЕЛЕН Return со значением - числовым, текстовым или логическим значением. Для того, что бы программа поняла, что в свойстве находится именно код программы, а не функция, первое значение в свойстве должно быть &.)
Edit/Border/Top (Bottom,Left,Right) - свойство, отвечающее за границу ячейки сверху (снизу, слева, справа) (доступ из формы - изменение свойств в группе Borders). В качестве параметра - числовое значение (пусто - нет рамки, 0-ЖЕСТКО нет рамки, 1,2... - толщина границы)
Edit/Font/Size - свойство, отвечающее за размер шрифта в ячейке, числовое значение (пусто - 10, 6,7,... - размер шрифта)
Edit/Font/Name - свойство, отвечающее за имя шрифта в ячейке, текст, заключенный в двойные кавычки (пусто - "Arial")
Edit/Font/Align - выравнивание по горизонтали, числовое значение (пусто,0 - Left,1-Center,2-Right)
Edit/Font/Valign - выравнивание по вертикали, числовое значение (пусто,0 - Top,1-Middle,2-Bottom) - данное свойство не смог реализовать для отображения на экранной форме - к сожаление, Edit в Visual FoxPro допускает только горизонтальное выравнивание. При отображении отчета - все ОК.
Edit/Font/Flags (Bold,Italic,Underline) - управление атрибутами шрифта, числовое значение (пусто - ничего, +1-Выделение жирным,+2 - Курсивом, +4- Подчеркнуть. Например, значение 3 Жирный курсив, 6-подчеркнутый курсив )
Edit/Font/Color - цвет шрифта, числовое значение (пусто - цвет по умолчанию, обычно черный,в качестве значения - результат функции RGB, например 255 для красного RGB(255,0,0), или 65280 для зеленого - RGB(0,255,0) )
Edit/Font/BkColor - цвет фона ячейки, числовое значение (пусто - цвет по умолчанию, обычно белый,в качестве значения - результат функции RGB, например 16711680 для синего RGB(0,0,255), или 16777215 для белого - RGB(255,255,255) )
Edit/Clear - очистить только активную ячейку
Row/Insert - вставка новой строки в Хедер. Имеет значение, в какой ячейке исполняется команда. Если в Хедере - добавляется строка в конец, в ячейке - строки сдвигаются вниз (как в Excel-е). Если новая строка пересекается с сгруппированной ячейкой (из нескольких строк), строка АВТОМАТИЧЕСКИ добавляется в данную ячейку (как в Excel-е), т.е. нет необходимости расгруппировывать ячеки, потом опять объединять - все делается автоматом.
Row/Delete - удалении строки из Хедера. Если удаляемая строка пересекается с сгруппированной ячейкой (из нескольких строк), строка АВТОМАТИЧЕСКИ из ячейки (как в Excel-е), т.е. нет необходимости расгруппировывать ячеки а потом опять объединять.
Row/On Auto Height и Row/Off Auto Height - задание свойства растягиваться строке по высоте или зафиксировать жестко.
Активно используется в предложенном примере , но меню пока дорабатывается.
При добавлении, строка по умолчанию получает свойство Off Auto Height (жесткий размер высоты), поэтому если значение в ячейке превысит размер по высоте, ячейка будет обрезана.
Значением On Auto Height удобно пользоваться, если размер текста в ячейке динамический, т.е. нельзя предугадать его заранее.
Column/Insert/New Column - вставка колонки по всей высоте отчета.
Имеет значение, в какой ячейке исполняется команда. Если в Хедере - добавляется колонка слева, в ячейке - все колонки сдвигаются вправо (как в Excel-е). Если новая колонка пересекается с сгруппированной ячейкой (из нескольких строк/колонок), колонка АВТОМАТИЧЕСКИ добавляется в данную ячейку (как в Excel-е), т.е. нет необходимости расгруппировывать ячеки, потом опять объединять - все делается автоматом.
Column/Insert/New Column - Right - вставка колонки по всей высоте отчета справа.
Column/Delete - удаление колонки по всей высоте отчета.
Имеет значение, в какой ячейке исполняется команда. Если в Хедере - удаляется колонка слева, в ячейке - все колонки сдвигаются влево (как в Excel-е). Если новая колонка пересекается с сгруппированной ячейкой (из нескольких строк/колонок), колонка АВТОМАТИЧЕСКИ удаляется из данной ячейки (как в Excel-е), т.е. нет необходимости расгруппировывать ячеки, а потом опять их объединять.
Column/Edit Properties - доп. свойства, в разработке.
Header/Move UP (DOWN) - перенести Хедер со строками вверх(вниз), только в пределах типа Хедера.
Header/Caption - Заголовок Хедера
Header/Insert - добавление нового Хедера в отчет (того типа, по чему был клик)
Header/Delete - удаление Хедера из отчета вместе со связанными с ним строками.
Header/Rule/Report - условие печати Хедера и связанных строк (пусто - печатать все, .f. или функция, возвращающая .f. - Хедер не печатается)
Header/Rule/New Page - условие печати Хедера с новой страницы (пусто - печатать на той же, .t. или функция, возвращающая .t. - Хедер печатается с новой страницы)
Root/Move IN(OUT) - перенесение группировки на один уровень + (-) (в разработке) вместе со всеми Хедерами вида Group. Как сложно написано , на самом деле аналог Visual FoxPro Report Builder - > Data Grouping
Root/New Root - добавление нового уровня группировки (Start и End).
Root/Delete Root - удаление уровня группировки со всеми связанными Group.
Root/Edit 'Group by...' - редактирование условия группировки. Если Вы используете Group в отчете, таблица должна быть отсортирована соответствующим образом! (как и в стандартном Report Builder-е)
Undo - самый главный пункт в контекстном меню - Отмена последнего действия (в дальнейшем количество будет добавлено).
Как задать цвет шрифта ячейки?
Кликнуть по ячейке основной кнопкой мыши. Высветится (или обновится) панель свойств, в которой можно, кликнув по Font Color выбрать необходимый цвет из стандартных, или выбрав GetColor задать необходимый.
При выборе FUNCTION откроется окно редактирования, в котором можно функцию или программу FoxPro, которая сформирует необходимый цвет.
Пример функции -
RGB(0,255,0)
для зеленого цвета.
К FUNCTION можно обратиться так же через контекстное меню Edit/Font/Color.
Аналогично редактируются и другие свойства: Шрифт, Размер, Цвет фона ячейки, атрибуты шрифта и границы.
НО нужно, понимать, что если Вы свойства задаете через FUNCTION, то результат работы сможете увидеть только после генерации отчета.
Как задать реакцию на клик по содержимому ячейки?
Кликнуть неосновной кнопкой по ячейке для вызова контекстного меню.
Далее, выбрать Edit/Cell/Click
Откроется окно редактирования реакции на клик
Если по клику требуется обычный переход на страницу, то достаточно, например, написать текст:
" http://www.maple4.ru/forums/index.php?showtopic=23"
Обратите внимание, текст взят в двойные кавычки
Если же требуется обработка в зависимости от содержимого, тогда, например (реализовано в отчете при выводе списка телефонов)
"VFP:///phone_click(`alltr(str(phonek.id_))`)"
что это означает?
программа при формировании отчета создаст ссылку, текст которой будет зависеть от содержимого поля таблицы phonek.id_ (уникальный идентификатор номера телефона)
т.е., еще раз например, будут созданы ссылки (и размещены в тексте HTML), вида
"VFP:///phone_click(1)"
"VFP:///phone_click(2)"
"VFP:///phone_click(3)"
....
Далее, в процессе просмотра готового отчета, при клике по тексту (в данном случае - по номеру телефона) запустится функция phone_click() с соответствующим параметром (функция phone_click генерит детализированный отчет по телефону и выводит его на экран).
Префикс VFP в ссылке - это указание программе, что требуется выполнение функции FoxPro, а не переход по ссылке.
еще один пример генерации ссылки - в главном отчете (ячейка Report)
"VFP:///messagebox('DateTime for Report - `ttoc(datetime())`'+chr(13)+'DateTime For Click - '+ttoc(datetime()))"
при генерации отчета будет создана, например, ссылка
"VFP:///messagebox('DateTime for Report - 07/02/2008 09:37:33'+chr(13)+'DateTime For Click - '+ttoc(datetime()))"
а при клике в готовом отчете, запустится стандартная функция messagebox Visual FoxPro и выведет, например, сообщение (вторая строка сообщения - текущие дата/время ) :
DateTime for Report - 07/02/2008 09:37:33
DateTime for Click - 07/02/2008 09:40:38
В представленном примере, последовательно выводятся все необходимые отчеты для редактирования, а после закрытия последнего отчета генерится страница HTML.
Загрузить программу можно отсюда (требуется Visual FoxPro 9.0 SP1)
http://www.maple4.ru/a_downloads_for_maple4_ru/m4rb_demo_no_dll.zip
Версия (c DLL) – со страницы:
http://www.maple4.ru/i_downloads.htm
ФОРУМ:
http://www.maple4.ru/forums/index.php?showtopic=23
Официальная страница:
http://www.maple4.ru/i_m4rb.htm
реклама
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают