![]() |
#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). |
![]() |
#2 |
Мрачный тип
|
В курсе по разработке сия фича не описывалась, спасибо
![]()
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
![]() |
#3 |
Moderator
|
Полезно!
А то, что Job можно перетащить в Classes и будет создан класс с именем джоба и в нем статический метод main с текстом джоба, это все знают? А в существующий класс тоже можно перетащить джоб и он тоже станет статическим методом с именем джоба. |
|
|
За это сообщение автора поблагодарили: Lemming (4), lev (2), Stitch_MS (2), S.Kuskov (1), Kabardian (3). |
![]() |
#4 |
Moderator
|
Вспоминал, вспоминал, что еще можно было прикольно таскать...
Вспомнил - запросы! Из AOT\Queries - в Редактор. Создается шаблон цикла while ... next(). Например, сохраненный запроc LedgerJournalName пропишет такое: X++: if (LedgerJournalName.prompt()) { while (LedgerJournalName.next()) { LedgerJournalName = LedgerJournalName.getNo(1); LedgerJournalTable = LedgerJournalName.getNo(2); } } |
|
![]() |
#5 |
Боец
|
Цитата:
Сообщение от Gustav
![]() Вспоминал, вспоминал, что еще можно было прикольно таскать...
Вспомнил - запросы! Из AOT\Queries - в Редактор. Создается шаблон цикла while ... next(). Например, сохраненный запроc LedgerJournalName пропишет такое: X++: if (LedgerJournalName.prompt()) { while (LedgerJournalName.next()) { LedgerJournalName = LedgerJournalName.getNo(1); LedgerJournalTable = LedgerJournalName.getNo(2); } } |
|
![]() |
#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. |
|
![]() |
#7 |
Участник
|
Еще меюитемы автоматом умеет создавать.
Тоже полезная штука. |
|
|
За это сообщение автора поблагодарили: Gustav (1). |
![]() |
#8 |
Moderator
|
Что там на что надо тянуть?
|
|
![]() |
#9 |
Боец
|
|
|
|
За это сообщение автора поблагодарили: Gustav (1). |
![]() |
#10 |
Участник
|
Класс тянем в группу менюитемов(в любую из трех) и получаем менюитем для данного класса, удобно для классов имеющих main метод для запуска.
upd: пока писал, меня опередили. Последний раз редактировалось Lemming; 16.10.2009 в 16:39. |
|
|
За это сообщение автора поблагодарили: Gustav (1). |
![]() |
#11 |
Moderator
|
Да, уже и сам почти написал
![]() Последний раз редактировалось Gustav; 16.10.2009 в 16:44. |
|
![]() |
#12 |
Ищущий знания...
|
ещё вот вспомнил..
можно display или edit метод в таблице перетащить в какую нибудь группу полей (Fieldgroups), и оно автоматически станет полем (в группе полей конечно, не в таблице) ![]() потом достаточно просто восстановить форму и вуаля (если конечно Fieldgroup используется в форме и проставлено свойство AutoDataGroup в Yes) ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем Последний раз редактировалось lev; 16.10.2009 в 17:19. |
|
![]() |
#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. |
|
![]() |
#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). |
![]() |
#15 |
Moderator
|
Сейчас попробовал в оригинальной строке просто заменить n на r
X++: // // textBuffer.appendText('\n'); // textBuffer.appendText('\r'); ![]() Блокноту - всё так же нет, Excel'ю - по-прежнему хорошо |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#16 |
Участник
|
Цитата:
Может стоит строку попроще сделать textBuffer.appendText('\r\n'); Это виндовый разделитель 0x0D 0x0A. |
|
![]() |
#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, полезное, редактор |
|
|