18.08.2011, 19:37 | #21 |
Британский учённый
|
Цитата:
Реализовано через SysContextMenu, так же есть кнопочка для Табакса.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (4), Ярослав Щекин (1). |
18.08.2011, 20:08 | #22 |
Участник
|
Выкладываю новую версию. Изменения:
. Исправлены значения по умолчанию для свойств SignDisplay, LabelLineBelow. . Сделано игнорирование при сохранении отсутствующих в исходном файле значений "по умолчанию". Последний раз редактировалось Ярослав Щекин; 01.09.2011 в 19:52. |
|
|
За это сообщение автора поблагодарили: virhundo (1). |
19.08.2011, 14:43 | #23 |
Участник
|
Спасибо. Но, когда я пытался адаптировать этот проект под свою Axapta 3.0, то выяснил, что отчёт экспортируется без меток (вызовом treeNodeExport). Вы не знаете, каким образом заставить Axapta экспортировать их?
|
|
19.08.2011, 15:07 | #24 |
Британский учённый
|
Цитата:
X++: // >> DEV:mxk 18/08/11-16:09:19 DEV_ReportEditorExternal>> /* System export flags #define.noExport(0) // Do not export #define.export(1) // Export #define.expKeepIds(0x0100) // Export with ID's #define.expLables(0x0400) // Export labels #define.expProjectOnly(0x800) // Export project only #define.expLockOnExport(0x1000) // Lock exported elements #define.expDefaultValues(0x2000) // Export default properties values #define.expLayer(0x4000) // Export current layer only*/ protected void export( TreeNode _node = reportNode, FilePath _fileName = xpoFile) { int flag = (#expKeepIds + #expLables + #expLockOnExport); ; if (_node) { _node.treeNodeExport(_fileName, flag); } } X++: // >> DEV:mxk 18/08/11-16:09:19 DEV_ReportEditorExternal>> /* System import flags #define.impOk(0x0000) // Element imported #define.impError(0x0001) // Element is not imported #define.impReImport(0x0002) // Reimport is needed #define.impReImporting(0x0004) // Reimporting #define.impStopped(0x0008) // Stop import #define.impNeverOverwrite(0x0010) // Do not overwrite elements #define.impQueryOverwrite(0x0020) // Display a dialog asking if you want to override or not #define.impGetCompareNode(0x0040) // Import into node not in tree #define.impRemoveExcess(0x0080) // Delete subelements not found in tree #define.impKeepIds(0x0100) // Keep ID's after import #define.impFormCopyPaste(0x0200) // Using import to copy and paste form-controls #define.impLabels(0x0400) // Import labels #define.impOverrideLocks(0x0800) // Override locks #define.impAddToProject(0x2000) // Import into project #define.impIgnoreCheckStatus(0x8000)// Import even if object is checked in*/ protected void import( TreeNode _importNode = reportNode, FilePath _fileName = xpoFile) { SysImportElements import; SysCompilerOutput compiler; TmpAotImport tmpAotImport; TreeNode treeNodeImport; int importId; int elements; int flag = (#impKeepIds + #impOverrideLocks + #impLabels + #impIgnoreCheckStatus + #impRemoveExcess); boolean importOk ; try { // Import file and compile it import = new SysImportElements(); import.newFile(xpoFile); import.parmAddToProject(false); import.parmImportAot(true); import.parmImportWithIds(false); import.import(#impRemoveExcess | #impIgnoreCheckStatus); // retrieve the compilation log and use it to produce the external log tmpAotImport = import.getTmpImportAot(); compiler = infolog.compilerOutput(); info(strfmt("Report %1 successfully imported.", _importNode.treeNodeName())); } catch(Exception::Error) { error(strfmt("@SYS97044", xpoFile)); } }
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
19.08.2011, 15:09 | #25 |
Участник
|
В AX2009 используемые константы объявлены в макросе AotExport
|
|
19.08.2011, 15:12 | #26 |
Британский учённый
|
В предыдущих версиях тоже. В коде это коменты, что бы было удобнее изменить под себя. Не думаю, что многие знают эти флаги наизусть
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
19.08.2011, 15:28 | #27 |
Участник
|
Нет, метки всё равно не экспортируются.
|
|
19.08.2011, 16:15 | #28 |
Британский учённый
|
Проверил в 2009 - работает. Только нужно изменить код в \Classes\SysImportLabel\label2Xml для нужного языка иначе будет ошибка.
X++: setIterator = new SetIterator(_languageSet ? Set::create(_languageSet.pack()) : con2Set(['en-gb']));
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
19.08.2011, 16:27 | #29 |
Участник
|
А в Axapta 3.0 --- не работает. Интересно, в ней это вообще возможно сделать?
|
|
19.08.2011, 16:36 | #30 |
Британский учённый
|
Как минимум можно сделать через стандартную форму экспорта, но это уже отдельная песня )
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
19.08.2011, 19:10 | #31 |
Участник
|
Жаль, то есть автоматизировать не получится. Выкладываю новую версию.
Изменения: . Добавлена (в меню групп) возможность вертикального и горизонтального разбиения всех control-ов в группе. . Немного откорректирована прорисовка сетки. . Открыты для редактирования/поиска свойства LabelLineBelow, LabelLineThickness. Последний раз редактировалось Ярослав Щекин; 01.09.2011 в 19:52. |
|
19.08.2011, 19:29 | #32 |
Британский учённый
|
Ну почему же можно, просто это будет немного не так красиво: добавить галочку в стандартную форму экспорта и вызывать редактор после того как стандартный экспорт отработает.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
24.08.2011, 12:35 | #33 |
Участник
|
Выкладываю новую версию.
Изменения: . Исправлена ошибка при попытке открыть несуществующий отчёт. . Исправлена ошибка в "Paste/import here". . Добавлен cache для быстрого поиска control-ов по названию. . Добавлены шаблоны (Templates) в дистрибутив. . Оптимизирован PreCalcControl (расчёт размеров control'a). Последний раз редактировалось Ярослав Щекин; 28.04.2012 в 08:11. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
24.08.2011, 15:17 | #34 |
Участник
|
Ярослав, а можно попросить здесь привести некое описание рекламного характера вашего редактора отчетов? С картинками, перечнем основных функций, и какие кнопки клавиатуры (мыши) нажимать, чтобы создать отчет. Что-то вроде из серии "для чайников".
Могу ли я с помощью вашего инструмента изменить уже существующий в Аксапте отчет, который был создан без вашего инструмента? А существующий отчет наподобие товарной накладной (с линиями) смогу отредактировать? Устроят картинки и описание для Аксапты 3.0. Спасибо! PS: Люблю всякие фишки и примочки в Аксапте, которые запускаются одной-двумя кнопками типа ALT~ или правой кнопкой мыши. А вот Tabax так и не прижился у меня Последний раз редактировалось Ace of Database; 24.08.2011 в 15:20. |
|
24.08.2011, 16:04 | #35 |
Участник
|
Закачал вашу программу, загрузил в нее проект с отчетом из Аксапты 3.0
Редактор корректно заработал с отчетом (сначала загрузил отчет без GENERATED DESIGN, потом прочитал README-файл и понял что к чему) Теперь хочу понять основное. Почему мне лучше пользоваться данной утилитой, а не встроенным в Аксапту редактором отчетов? Может из-за этого: 1) данный редактор отчетов позволяет сдвигать один или несколько контролов мышкой и вставлять в освободившееся место новые контролы. А еще можно продолжить этот список? |
|
24.08.2011, 16:35 | #36 |
Британский учённый
|
Табакс удобен для управления окнами. Хотя я много из него перенес на горячие клавишы (HKFrameWork), теперь столько времени экономит. Табакс у меня тоже под себя хорошо кастомизирован.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
24.08.2011, 17:06 | #37 |
Участник
|
Цитата:
Цитата:
Что касается описания, прочитайте Readme и попробуйте все функции во всех контекстных меню, если что-то непонятно --- спрашивайте. |
|
24.08.2011, 18:02 | #38 |
Участник
|
2) Изменение любых свойств для всех control'ов группы, например установка Font=Bold или изменение толщины линий.
3) Экспорт/импорт групп control'ов, что позволяет создавать и использовать шаблоны. 4) С помощью "Mark lowest" можно быстро найти, почему секции на печати неплотно прилегают друг к другу (не всегда очевидно). 5) С помощью "Mark rightmost" можно найти, по какому control'у будет масштабироваться отчёт при "Fit to page". 6) "Show too wide texts" и "Highlight field/shape intersections" подсвечивают возможные ошибки в позиционировании control'ов. 7) Можно изменять тип существующих control'ов и секций, например, превратить DBLFIELD в STRFIELD. 8) "Scale controls" позволяет масштабировать группы control'ов. 9) "Align as table" --- автоматическое выравнивание таблиц. 10) "Link as table" --- автоматическое связывание control'ов в таблицы, что даёт возможность легко изменять размеры строк и столбцов. |
|
|
За это сообщение автора поблагодарили: Ace of Database (2). |
24.08.2011, 18:44 | #39 |
Участник
|
Цитата:
остальное - да, круто. |
|
24.08.2011, 19:08 | #40 |
Участник
|
Цитата:
2) Слияние/разделение (групп) control-ов, что позволяет, например, быстро добавить столбец в таблицу: Link as table -> растянуть один столбец в ширину -> выделить в одну группу control'ы этого столбца -> split controls horizontally. |
|
Теги |
xpo, xpo editor, законченный пример, полезное, редактор |
|
|