03.10.2006, 14:35 | #1 |
Участник
|
[ANN] AOT - SpotX
Привет всем!
Хочу представить свою утилитку для облегчения работы в аксапте. по сути это надстройка над аотом, которая кроме всего прочего позволяет его дочить наконец к краям экрана кроме этого к аоту добавляются закладки (любой узел), активные окна (для переключения, причем если окно было минимизировано - оно развернется автоматом) и проекты, в общем запустив Spot не нужно будет жать лишних кнопок. надо заметить что в Spot эмбеддится именно оригинальный аот, не суррогат, т.е. все его возможности доступны и в задоченном виде (в том числе и поиск по первым буквам и т.д.) настройки (какие есть) - в classDeclaration # - для добавления в закладки достаточно просто перетащить пункт из нижнего окна (аота) в верхний (где закладки) # - из Аота можно переносить не только отдельные элементы а целые узлы (раздел "классы", раздел "формы"). # - Для удаления закладки - правый клик на пункте - конктекстный пункт "+/- Bookmark" # - в нижнем аоте также работает скроллинг и поиск по первым буквам # - при развертывании узла в закладках с шифтом его содержимое обновляется (а так - кешируется) # - список окон также обновляет при открытии ветки # - при выборе узла аота с шифтом/контролом узел активируется в едит/newwindow режиме скрин и форма в аттаче. если что ногами не пинать, надеюсь будет комунибудь полезно идеи почерпнуты из Sidaxа, большое спасибо Beluginу за эту утилитку! Последний раз редактировалось IPv6; 03.10.2006 в 17:04. |
|
|
За это сообщение автора поблагодарили: mazzy (5), George Nordic (4). |
03.10.2006, 16:51 | #2 |
Moderator
|
OFF: Что такое [ANN] ?
Коллеги, я может чего невнимательно пропустил, но что означает этот префикс в названии темы?
Спасибо. |
|
03.10.2006, 16:58 | #3 |
Moderator
|
announce ?
|
|
03.10.2006, 16:59 | #4 |
Участник
|
[ANN] -- announce
|
|
03.10.2006, 17:08 | #5 |
Axapta
|
[!!!] Будет понятнее.
|
|
03.10.2006, 17:14 | #6 |
Участник
|
[ANN] - announce, довольно распространенный таг на тему с анонсами
кстати, 2Belugin: в описании sidaxа написано про фичу "домик" (на которой я и забазировал эту надстройку над аотом), и написано что она глючит в плане "Если сожрать проект, то нельзя искать по активному AOT окну нажатиями клавиш, а только по сожранному проекту" <- во, этот недостаток удалось победить! офф: понимаю что врядли это кому сильно интересно (все уже привыкли как есть). для меня это был способ изучить аксапту. |
|
03.10.2006, 17:49 | #7 |
Участник
|
И как удалось?
|
|
03.10.2006, 18:51 | #8 |
Участник
|
в моем случае: AOT выдирается из своего окна и приклеивается к dummy контролу на своей форме (примерно тоже делает домик в сидаксе), а оригинальное окно скрывается. после этого образуется одна проблема - на аотовское дерево больше не приходят сообщения о фокусе (из-за чего и вышеописанная бага тоже наблюдалась). т.е. чтобы все было ок нужно чтобы приходили. экспериментально выяснилось что для этого можно послать WM_SETFOCUS тому окну которое раньше было его парентом (даже хотя оно и скрыто!). видимо то окно тоже запоминает hWnd где-то у себя и при приходе setfocus все делает как надо. думаю так со всеми окнами в аксапте (class у всех MDI окон одинаков что говорит о том что и поведение скорей всего тоже).
изврат но вроде стабильно работает. |
|
04.10.2006, 10:34 | #9 |
Пенсионер
|
Прикольно, при ресайзинге, в нижнем окне какая-то полоска туда-сюда бегает...
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
04.10.2006, 11:14 | #10 |
Участник
|
- могу ли я запихать это в Sidax отдельной кнопкой? (мне так будет удобнее)
- что-то при ресайзе многовато дергается - надо чтобы пустые папки фаворитов при старте были б без плюсиков - надо бы обрабатывать драговер: X++: public FormDrag dragOverEx(Array _dragSource, FormDrag _dragMode, int _x, int _y) { FormDrag ret; ret = super(_dragSource, _dragMode, _x, _y); // тут доблен быть анализ того что мы можем принять гостинец return FormDrag::Copy; } |
|
04.10.2006, 11:59 | #11 |
Участник
|
- да, конечно! тогда я обратно к Sidaxу вернусь Только два встречный предложения
--- можно ли сделать инициализацию главного меню отложенной, при первом заходе на вкладку? Меню не так часто нужно а при старте обновление не дает работать с узлами аота --- можно ли сделать чтобы активация окна проверяла минимизировано ли окно и поднимало его если да. в spotx как раз так проверяется (если не минимизировано то просто активируется), можно выдрать код - с ресайзингом экспериментирую (с количеством телодвижений) так как окно аота подцепляется не совсем честно, оно иногда пытается показать свой норов и появляются артефакты, с которыми я и борюсь. они исчезают если поменять размер окна, но всеже хочется чтобы вообще все было на автомате... - с пустыми папками и драговером тоже ясно, поправлю в аттаче последняя версия с несколькими исправленными багами (мелкими) Последний раз редактировалось IPv6; 04.10.2006 в 12:45. |
|
04.10.2006, 12:47 | #12 |
Участник
|
Попробуйте передалать ресайзинг так
X++: void SyncSizes(HWND w_inner,HWND w_outer) { if(w_inner){ // WinApi::forceMaximizeWindow(w_outer); // this.ShowWindow(w_inner, #SW_MINIMIZE);//SW_MINIMIZE // this.ShowWindow(w_inner, #SW_MAXIMIZE); WinApi::setWindowPos(w_inner,0,0,WindowAOT.widthValue(), WindowAOT.heightValue(),false,false, #SWP_NOZORDER); // WinApi::setWindowPos(w_inner,0,0,0,0,false,true); } }
__________________
Axapta v.3.0 sp5 kr2 |
|
04.10.2006, 12:53 | #13 |
Участник
|
AndyD
опередил.... =) Еще багу нашел - если развернуть окно на весь экран, а потом свернуть ... |
|
04.10.2006, 13:04 | #14 |
Участник
|
2Alex_KD: Спасибо! так значительно легче
2AndyD: Нда... а максимизацию можно запретить? |
|
04.10.2006, 13:14 | #15 |
Участник
|
хороша утилитка, толко хотелось бы видеть сам открытый проект вверху. Мош кто знает как туда заинтегрировать окно проекта - типа как во многих IDE? (знаю, можно самому рисовать дерево, но лень кодить)
|
|
04.10.2006, 13:19 | #16 |
Участник
|
дерево проекта можно "поймать" в контрол на своей форме по аналогии с аотом.
надо будет докрутить |
|
04.10.2006, 13:20 | #17 |
Участник
|
Кстати, неплохо бы при закрытии формы закрывать так же и скрытое окно AOT, а то "плодются"
PS. При этом восстанавливать парент у захваченного окна
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 04.10.2006 в 13:23. |
|
04.10.2006, 16:01 | #18 |
Участник
|
Странно, но открывая проект таким же способом, у меня вылетает пустой проект, хотя в нём должны быть ChildNodes...
Жму dbl-click на единственный элемент - и оппааа - открывается "настойащий" проект PS: всё, нашел - TreeNodeCurrentProject.AOTRun(); Последний раз редактировалось Delfins; 04.10.2006 в 16:22. |
|
04.10.2006, 17:32 | #19 |
Участник
|
не понял про пустой проект... а можно поподобнее?
я кстати добавил затаскивание любого окна (проекта) в Tab (закладка теперь просто один из табов, а аот виден всегда) |
|
04.10.2006, 17:38 | #20 |
Участник
|
Ну этот этап уже прошел.
Вот мой вариант, пока глючный. Не обижайся, скопировал основной код поиска окон Надо добавить меню закрытия проекта... и.т.д. Добовлять "любое окно" мне не понадобится, лучше доделаю для себя простенький DevPanel... Anyway, спасибо за проект |
|
Теги |
полезное |
|
|