AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.10.2004, 18:03   #1  
wb is offline
wb
Участник
 
86 / 16 (1) ++
Регистрация: 26.01.2004
Адрес: Краснодар
? Как вызвать окно Select Window?
Приветствую ALL!

В верхнем меню если открыто больше 9 окон появляется пункт "More Windows...",
который вызывает окно Select Window. Как можно вызвать это окно из кода?

С уважением,
wb
Старый 28.10.2004, 14:17   #2  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
помню, интересовался я эти окном, но ничего не нашел
т.е. пришел к мнению, что если его и можно к-л открыть, то только обратившись к MDI интефейсу через winapi, а я к сожалению, не большой специалист в этой области.

(хотел сделать панель задач, навроде как в браузере опера. вы, случайно, не что-либо подобное задумали?)
Старый 29.10.2004, 10:23   #3  
wb is offline
wb
Участник
 
86 / 16 (1) ++
Регистрация: 26.01.2004
Адрес: Краснодар
Цитата:
Изначально опубликовано maxsmirnov
помню, интересовался я эти окном, но ничего не нашел
т.е. пришел к мнению, что если его и можно к-л открыть, то только обратившись к MDI интефейсу через winapi, а я к сожалению, не большой специалист в этой области.

(хотел сделать панель задач, навроде как в браузере опера. вы, случайно, не что-либо подобное задумали?)
именно, очень уж не удобно при разработке без панели
Старый 03.11.2004, 16:54   #4  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
случайно наткнулся на что-то похожее

в xInfo есть метод activateWindow()
судя по контексту (поищите в АОТе "activateWindow") он берет на вход hWnd
если получить к-л образом список hWnd всех окон (наверняка же можно, через winapi..???), то можно организовать панель с которой можно будет активировать окна.

вот так можно получить хВнд родительского окна клиента аксапты
WinAPI::findWindow('AxaptaClientClassName', '');

есть метод
static client public HWND findWindowEx(HWND _parent, HWND _after, str _class, str _title)
с помощью которого можно получать дочерние окна
как его юзать - я не понял...
вернее, понял, но не смог применить :)
поискав в инете доку на винапишную функцию FindWindowExA которую он юзает, я написал следующий код:

PHP код:
static void Job7(Args _args)
{
    
hWnd    Parent;
    
hwnd    Child;
    ;
    
Parent WinAPI::findWindow('AxaptaClientClassName''');

    for (
Child WinAPI::FindWindowEx(Parent0'''');
         !
children.exists(child);
         
Child WinAPI::FindWindowEx(Parentchild''''))
    {
        
info(strfmt("%1 - %2"childWinAPI::getWindowText(child)));
    }

он выдает какие-то hwnd, но activateWindow() их не кушает

хуже того
hwnd - это, как правило, довольно большие, 6-значные инты.

я попробовал перебором найти то, что примет на вход activateWindow(), и обнаружил, что перебирая числа от 0 до 1000 я преребрал все октрытые у меня на тот момент окна!!!

PHP код:
static void Job6(args a)
{
    
int i;
    ;
    
//infolog.activateWindow(197606);

    
for (01000i++)
    {
        
infolog.activateWindow(i);
    }

короче говоря, я окончательно запутался.
с одной стороны (судя по классу sysCompilerOutput, к примеру) activateWindow берет на вход хвнд, и это работает, с другой стороны опытным путем было найдено окно которой активировалось по activateWindow(906)...
если будут к-л результаты - пишите

PS. я изменил тему треда в надежде что такая привлечет больше людей :)

Уважаемые разработчики!
Предлагаю совместно исследовать возможность соорудить в аксапте панель задач!
Старый 03.11.2004, 18:00   #6  
wb is offline
wb
Участник
 
86 / 16 (1) ++
Регистрация: 26.01.2004
Адрес: Краснодар
я создал тестовую форму с одной кнопкой
в init методе
PHP код:
Button.text(strfmt('%1',this.hWnd())); 
например у меня выводит 2491130 525148 и т.п.
запуcкая
PHP код:
infolog.activateWindow(2491130); 
я активирую нужное окно,
значит не понятно, что выдает Ваш job на основе

Цитата:
Изначально опубликовано maxsmirnov
вот так можно получить хВнд родительского окна клиента аксапты
WinAPI::findWindow('AxaptaClientClassName', '');
Старый 03.11.2004, 19:06   #7  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
о!
я поставил сканнер окон с http://kickme.to/inqsoft и прозрел

hwnd окон аксапты (окна с пользовательской точки зрения) просто лежат на уровень ниже.



остальное - дело техники
к сожалению, прямо сейчас у меня нет времени этим заняться, но когда напишу - от общественности скрывать не буду.
Вложения
Тип файла: img49947-1 (7.7 Кб, 1058 просмотров)
За это сообщение автора поблагодарили: Logger (3).
Старый 03.11.2004, 21:18   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Вот, попробовал суммировать все предыдущие знания, не используя WinAPI. Получился такой вот проектик.

Выглядит следующим образом:


Основной минус: Отслеживаются только формы. То есть те окна, которые сделаны с использованием FormRun. То есть ни Главное меню, ни проекты отобразить не удалось.

Когда-нибудь попробую сделать через WinAPI.
Вложения
Тип файла: xpo taskpanel.xpo (20.3 Кб, 380 просмотров)
Тип файла: img49953-1 (116.3 Кб, 1113 просмотров)
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 03.11.2004, 21:39   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
WinAPI::findWindow('AxaptaClientClassName', '');
Кстати, это же значение возвращает метод infolog.hwnd() - т.е. HWND родительского окна
различие между findWindow() и findWindowEx() состоит в том, что первая функция ищет только главные окна, а вторая - только подчиненные главному (для MDI-интерфейса).
Таким образом рождается след код:
PHP код:
    HWND AxClientAxChild;
    ;
    
AxClient WinApi::findWindowEx(infolog.hWnd(), 0"MDIClient""");
    
AxChild WinApi::findWindowEx(AxClientnullvalue(AxChild), ""node.treeNodePath());
    
infolog.activateWindow(AxChild); 
Данный код отображает окно элемента АОТ, который задан в переменной node (тип TreeNode). У этого окна заголовок - типа \Classes\Global
За это сообщение автора поблагодарили: IvanS (1).
Старый 03.11.2004, 22:46   #10  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
вот, наваял что-то через winapi...

возникают такие проблемы:

1. как отслеживать открытие/закрытие новых окон?
не придумал ничего лучше чем зарядить сканирование в infolog.setTimeOut() с переодичностью раз в секунду... (не реализовал еще )

2. свернутым окнам фокус передается, но они не разворачиваются
в винапи есть метод maximize... он разворачивает на весь экран... ничего похожего на restore не нашел

3. как ни старался, не получилось сделать красиво, как в винде

4. отображаются скрытые окна.
попутно выяснилось что окна infologа, хелпа, итп, никогда не закрываются, а только хайдятся

про FormRun:
идеальное решение мне видится как гибрид этих двух подходов.
имея FormRun, можно корректно закрывать формы.
Вложения
Тип файла: xpo taskpanel_ms.xpo (5.2 Кб, 369 просмотров)
Старый 04.11.2004, 08:56   #11  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
1. ИМХО, лучше ничего уже и не придумаешь...
2. Есть там RESTORE, просто его не обернули . В свой метод selectControl() подключи макрос #WinAPI и добавь строчку:
WinAPI::sendMessageEx(hWnd, #WM_SYSCOMMAND, #SC_RESTORE, 0);
3. Не рановато красоту наводить?
4. Тут надо покопаться, но навскидку "скрытность" окон, вроде, можно отследить через АПИ-шную ф-цию GetWindowLong(HWND hWnd, int nIndex)

P.S. Кстати, о красоте - кнопки схожего назначения (окна проектов, окна редакторов кода, формы, меню) было бы не плохо объединять в менюшки (а-ля XP).
Старый 04.11.2004, 09:38   #12  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
не стоит ли сделать это win32 приложением, т.к. все равно упремся в ограничения Axapta?

предлагаю накидать кратко пожелания и мысли по реализации сюда:
http://erpkb.com/Axapta/Panel'Zadach
чтобы иметь компактное представление итогов обсуждения
За это сообщение автора поблагодарили: alex55 (1).
Старый 04.11.2004, 14:02   #13  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
Цитата:
Изначально опубликовано maxsmirnov
вот, наваял что-то через winapi...

возникают такие проблемы:

2. свернутым окнам фокус передается, но они не разворачиваются
в винапи есть метод maximize... он разворачивает на весь экран... ничего похожего на restore не нашел
Кстати, читаю эти строки через браузер MyIE (MDI-надстройка над IE). В нем также - фокус передается, но окно не ресторится...
Старый 18.04.2006, 15:41   #14  
shura_k is offline
shura_k
Участник
 
3 / 10 (1) +
Регистрация: 29.11.2002
Восстановление окна.
WinAPI::showWindow(hWnd,9);

Другой вопрос. Почему кнопка после нажатия не работает, пока не нажать другую, а потом обратно эту?

Последний раз редактировалось shura_k; 18.04.2006 в 15:48.
Старый 18.04.2006, 17:13   #15  
SANTAN is offline
SANTAN
Участник
Аватар для SANTAN
 
20 / 12 (1) ++
Регистрация: 21.09.2005
Адрес: Kiev
А я пользуюсь вот этой Тулзой. Мне нравится.
Вложения
Тип файла: zip tools.zip (90.8 Кб, 185 просмотров)
Теги
winapi, панель задач, инструменты, интерфейс

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
[ANN] Tabax 0.1 -- панель задач для Axapta belugin DAX: База знаний и проекты 302 21.10.2016 12:49
Обращение к http-сервису в Аксапте Lucky13 DAX: Программирование 31 24.03.2015 19:37
Standart Costing, Direct Costing и механизмы их реализации в Аксапте slava09 DAX: Функционал 55 05.06.2006 11:00
Система оповещений в Аксапте (события в Аксапте) raunio DAX: Прочие вопросы 1 29.09.2005 15:44
Размышления на тему “Системы контроля версий в Аксапте”. Андре DAX: База знаний и проекты 31 07.02.2005 12:29

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:42.