16.10.2009, 13:18 | #1 |
Боец
|
Редактор X++ и Drag'n'Drop
Интересную функцию редактора X++ для себя открыл
Оказывается, в Редактор X++ можно перетягивать имена элементов AOT. А в случае множественного выделения, ещё и запятые проставляются: Проверил в DAX 3.0...5.0 Последний раз редактировалось DSPIC; 16.10.2009 в 13:24. |
|
|
За это сообщение автора поблагодарили: Lemming (2), lev (2), TasmanianDevil (2), AlexArh (1), Stitch_MS (2), miklenew (1), alex55 (1), JuniorAx (1). |
16.10.2009, 13:28 | #2 |
Мрачный тип
|
В курсе по разработке сия фича не описывалась, спасибо
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
16.10.2009, 13:43 | #3 |
Moderator
|
Полезно!
А то, что Job можно перетащить в Classes и будет создан класс с именем джоба и в нем статический метод main с текстом джоба, это все знают? А в существующий класс тоже можно перетащить джоб и он тоже станет статическим методом с именем джоба. |
|
|
За это сообщение автора поблагодарили: Lemming (4), lev (2), Stitch_MS (2), S.Kuskov (1), Kabardian (3). |
16.10.2009, 15:56 | #4 |
Moderator
|
Вспоминал, вспоминал, что еще можно было прикольно таскать...
Вспомнил - запросы! Из AOT\Queries - в Редактор. Создается шаблон цикла while ... next(). Например, сохраненный запроc LedgerJournalName пропишет такое: X++: if (LedgerJournalName.prompt()) { while (LedgerJournalName.next()) { LedgerJournalName = LedgerJournalName.getNo(1); LedgerJournalTable = LedgerJournalName.getNo(2); } } |
|
16.10.2009, 16:05 | #5 |
Боец
|
Цитата:
Сообщение от Gustav
Вспоминал, вспоминал, что еще можно было прикольно таскать...
Вспомнил - запросы! Из AOT\Queries - в Редактор. Создается шаблон цикла while ... next(). Например, сохраненный запроc LedgerJournalName пропишет такое: X++: if (LedgerJournalName.prompt()) { while (LedgerJournalName.next()) { LedgerJournalName = LedgerJournalName.getNo(1); LedgerJournalTable = LedgerJournalName.getNo(2); } } |
|
16.10.2009, 16:10 | #6 |
Moderator
|
это да, есть такое дело...
Кстати, для запросов в отчетах AOT \Reports \... \DataSources \Query - тоже работает. P.S. Упс! А перетаскивание датасорса из запроса в редактор вставляет SQL. Для \Queries \LedgerJournalName \Data Sources \LedgerJournalName(LedgerJournalName) получается: X++: SELECT * FROM LedgerJournalName JOIN * FROM LedgerJournalTable Последний раз редактировалось Gustav; 16.10.2009 в 16:23. |
|
16.10.2009, 16:22 | #7 |
Участник
|
Еще меюитемы автоматом умеет создавать.
Тоже полезная штука. |
|
|
За это сообщение автора поблагодарили: Gustav (1). |
16.10.2009, 16:28 | #8 |
Moderator
|
Что там на что надо тянуть?
|
|
16.10.2009, 16:35 | #9 |
Боец
|
|
|
|
За это сообщение автора поблагодарили: Gustav (1). |
16.10.2009, 16:36 | #10 |
Участник
|
Класс тянем в группу менюитемов(в любую из трех) и получаем менюитем для данного класса, удобно для классов имеющих main метод для запуска.
upd: пока писал, меня опередили. Последний раз редактировалось Lemming; 16.10.2009 в 16:39. |
|
|
За это сообщение автора поблагодарили: Gustav (1). |
16.10.2009, 16:41 | #11 |
Moderator
|
Да, уже и сам почти написал Спасибо. Ещё и запросы формально можно - даёт! и даже потом открывает SysQueryForm, но потом после ОК - зависалово с последующей перезагрузкой (по понятным причинам).
Последний раз редактировалось Gustav; 16.10.2009 в 16:44. |
|
16.10.2009, 17:13 | #12 |
Ищущий знания...
|
ещё вот вспомнил..
можно display или edit метод в таблице перетащить в какую нибудь группу полей (Fieldgroups), и оно автоматически станет полем (в группе полей конечно, не в таблице) потом достаточно просто восстановить форму и вуаля (если конечно Fieldgroup используется в форме и проставлено свойство AutoDataGroup в Yes)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем Последний раз редактировалось lev; 16.10.2009 в 17:19. |
|
16.10.2009, 18:54 | #13 |
Moderator
|
Сейчас испытал небольшой ступор с этим новым знанием. На днях мне потребовался для экспериментов метод для определения конкретного типа FormControl такого вида:
X++: str controlType(FormControl _control) { switch (classIdGet(_control)) { case classNum(FormActiveXControl) : return 'внедренный объект'; case classNum(FormAnimateControl) : return 'анимация'; case classNum(FormButtonControl) : return 'кнопка'; case classNum(FormButtonGroupControl) : return ''; //'группа кнопок'; case classNum(FormButtonSeparatorControl) : return 'разделитель кнопок'; //'разделитель кнопок'; case classNum(FormCheckBoxControl) : return 'флажок'; case classNum(FormComboBoxControl) : return 'поле'; //'поле со списком'; case classNum(FormCommandButtonControl) : return 'кнопка'; //'командная кнопка'; case classNum(FormDateControl) : return 'поле'; //'поле даты'; case classNum(FormFunctionButtonControl) : return 'кнопка'; //'кнопка-пункт меню'; case classNum(FormGridControl) : return 'таблица'; case classNum(FormGroupControl) : return 'группа'; case classNum(FormHTMLControl) : return 'поле HTML'; case classNum(FormIntControl) : return 'поле'; //'целочисленное поле'; case classNum(FormListBoxControl) : return 'список'; case classNum(FormListControl) : return 'список'; case classNum(FormMenuButtonControl) : return 'кнопка'; //'кнопка-меню'; case classNum(FormProgressControl) : return 'индикатор прогресса'; case classNum(FormRadioControl) : return 'переключатель'; case classNum(FormRealControl) : return 'поле'; //'числовое поле'; case classNum(FormStaticTextControl) : return 'надпись'; case classNum(FormStringControl) : return 'поле'; //'текстовое поле'; case classNum(FormTabControl) : return ''; //'набор вкладок'; case classNum(FormTableControl) : return 'таблица'; case classNum(FormTabPageControl) : return 'вкладка'; case classNum(FormTimeControl) : return 'поле'; //'поле времени'; case classNum(FormTreeControl) : return 'иерархический список'; } return ''; }
P.S. Ну или в окно редактирования сообщения АксФорума можно вставку выполнить - тоже работает Последний раз редактировалось Gustav; 16.10.2009 в 18:56. |
|
16.10.2009, 19:23 | #14 |
Боец
|
При множественном копирования имен объектов АОТ (контекстное меню\Add-Ins\Copy\Names) и последующей вставке в редактор X++ наблюдаем неприятный эффект:
все имена вставляются в одну строчку; при этом они разделены кривым символом-разделителем, который приводит к ошибке редактора и невозможности что-то в нем сохранить. Этот баг лечится очень просто. \Classes\SysTreeNodeNameCopyToClipboard\runsysContextMenu: X++: void runsysContextMenu(SysContextMenu _sysContextMenu) { TreeNode aNode = _sysContextMenu.first(); TextBuffer textBuffer = new TextBuffer(); int lines; while (aNode) { if (lines) //copy AOT names fix, EVO --> //orig: textBuffer.appendText('\n'); textBuffer.appendText(strfmt("%1%2", num2char(0x0D), num2char(0x0A))); //copy AOT names fix, EVO <-- textBuffer.appendText(aNode.treeNodeName()); lines++; aNode = _sysContextMenu.next(); } if (lines) textBuffer.toClipboard(); } Последний раз редактировалось DSPIC; 16.10.2009 в 19:29. |
|
|
За это сообщение автора поблагодарили: Gustav (2). |
16.10.2009, 19:37 | #15 |
Moderator
|
Сейчас попробовал в оригинальной строке просто заменить n на r
X++: // // textBuffer.appendText('\n'); // textBuffer.appendText('\r'); Блокноту - всё так же нет, Excel'ю - по-прежнему хорошо |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
16.10.2009, 19:40 | #16 |
Участник
|
Цитата:
Может стоит строку попроще сделать textBuffer.appendText('\r\n'); Это виндовый разделитель 0x0D 0x0A. |
|
16.10.2009, 20:06 | #17 |
Боец
|
Цитата:
Используя явные HEX байты, мы на 100% отсекаем эту ошибку преобразования, поэтому: Цитата:
Может стоит строку попроще сделать textBuffer.appendText('\r\n');
Насколько я помню, \n = 0x0D + 0x0A, а \r - это возврат каретки P.S. Из теории Цитата:
...
Управляющие символы Основная статья: Управляющие символы Различные операционные системы придерживаются своего представления перевода строки и конца файла. В UNIX перевод строки состоит из одного символа LF (0x0A), в Mac OS — из символа CR (0x0D), а в DOS и Microsoft Windows перевод строки кодируется последовательностью двух символов CR LF. В DOS и Microsoft Windows конец файла кодируется символом 0x1A, а в UNIX символ конца файла не употребляется ... http://wapedia.mobi/ru/%D0%A3%D0%BF%...BE%D0%BB%D1%8B т.е. для винды нужно сделать возврат каретки+перевод строки: 0x0D + 0x0A = '\n' , а '\r' - это пол дела Последний раз редактировалось DSPIC; 16.10.2009 в 20:19. |
|
Теги |
ax2009, ax3.0, ax4.0, drag-n-drop, полезное, редактор |
|
|