AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 27.10.2004, 18:03   #1  
wb ist offline
wb
Участник
 
86 / 16 (1) ++
Registriert seit: 26.01.2004
Ort: Краснодар
? Как вызвать окно Select Window?
Приветствую ALL!

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

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

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

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

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

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

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

PHP-Code:
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-Code:
static void Job6(args a)
{
    
int i;
    ;
    
//infolog.activateWindow(197606);

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

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

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

Уважаемые разработчики!
Предлагаю совместно исследовать возможность соорудить в аксапте панель задач!
Alt 03.11.2004, 17:28   #5  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
http://kickme.to/inqsoft
кстати,
http://erpkb.com/Axapta/MakrosyAutoHotkey
Alt 03.11.2004, 18:00   #6  
wb ist offline
wb
Участник
 
86 / 16 (1) ++
Registriert seit: 26.01.2004
Ort: Краснодар
я создал тестовую форму с одной кнопкой
в init методе
PHP-Code:
Button.text(strfmt('%1',this.hWnd())); 
например у меня выводит 2491130 525148 и т.п.
запуcкая
PHP-Code:
infolog.activateWindow(2491130); 
я активирую нужное окно,
значит не понятно, что выдает Ваш job на основе

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

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



остальное - дело техники
к сожалению, прямо сейчас у меня нет времени этим заняться, но когда напишу - от общественности скрывать не буду.
Angehängte Dateien
Dateityp: img49947-1 (7,7 KB, 1107x aufgerufen)
This post has been rated by: Logger (3).
Alt 03.11.2004, 21:18   #8  
Maxim Gorbunov ist offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2.483 / 646 (26) +++++++
Registriert seit: 27.11.2001
Ort: Dubai, UAE
Вот, попробовал суммировать все предыдущие знания, не используя WinAPI. Получился такой вот проектик.

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


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

Когда-нибудь попробую сделать через WinAPI.
Angehängte Dateien
Dateityp: xpo taskpanel.xpo (20,3 KB, 397x aufgerufen)
Dateityp: img49953-1 (116,3 KB, 1168x aufgerufen)
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Alt 03.11.2004, 21:39   #9  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.343 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Zitat:
WinAPI::findWindow('AxaptaClientClassName', '');
Кстати, это же значение возвращает метод infolog.hwnd() - т.е. HWND родительского окна
различие между findWindow() и findWindowEx() состоит в том, что первая функция ищет только главные окна, а вторая - только подчиненные главному (для MDI-интерфейса).
Таким образом рождается след код:
PHP-Code:
    HWND AxClientAxChild;
    ;
    
AxClient WinApi::findWindowEx(infolog.hWnd(), 0"MDIClient""");
    
AxChild WinApi::findWindowEx(AxClientnullvalue(AxChild), ""node.treeNodePath());
    
infolog.activateWindow(AxChild); 
Данный код отображает окно элемента АОТ, который задан в переменной node (тип TreeNode). У этого окна заголовок - типа \Classes\Global
This post has been rated by: IvanS (1).
Alt 03.11.2004, 22:46   #10  
maxsmirnov ist offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Registriert seit: 08.07.2003
Ort: Москва
вот, наваял что-то через winapi...

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

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

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

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

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

про FormRun:
идеальное решение мне видится как гибрид этих двух подходов.
имея FormRun, можно корректно закрывать формы.
Angehängte Dateien
Dateityp: xpo taskpanel_ms.xpo (5,2 KB, 389x aufgerufen)
Alt 04.11.2004, 08:56   #11  
Ruff ist offline
Ruff
Дмитрий Ерин
Benutzerbild von Ruff
1C
 
475 / 396 (14) ++++++
Registriert seit: 18.09.2003
Ort: Тула
1. ИМХО, лучше ничего уже и не придумаешь...
2. Есть там RESTORE, просто его не обернули . В свой метод selectControl() подключи макрос #WinAPI и добавь строчку:
WinAPI::sendMessageEx(hWnd, #WM_SYSCOMMAND, #SC_RESTORE, 0);
3. Не рановато красоту наводить?
4. Тут надо покопаться, но навскидку "скрытность" окон, вроде, можно отследить через АПИ-шную ф-цию GetWindowLong(HWND hWnd, int nIndex)

P.S. Кстати, о красоте - кнопки схожего назначения (окна проектов, окна редакторов кода, формы, меню) было бы не плохо объединять в менюшки (а-ля XP).
Alt 04.11.2004, 09:38   #12  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
не стоит ли сделать это win32 приложением, т.к. все равно упремся в ограничения Axapta?

предлагаю накидать кратко пожелания и мысли по реализации сюда:
http://erpkb.com/Axapta/Panel'Zadach
чтобы иметь компактное представление итогов обсуждения
This post has been rated by: alex55 (1).
Alt 04.11.2004, 14:02   #13  
Alex_K ist offline
Alex_K
Участник
 
531 / 36 (3) +++
Registriert seit: 07.02.2003
Zitat:
Изначально опубликовано maxsmirnov
вот, наваял что-то через winapi...

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

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

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

Geändert von shura_k (18.04.2006 um 15:48 Uhr)
Alt 18.04.2006, 17:13   #15  
SANTAN ist offline
SANTAN
Участник
Benutzerbild von SANTAN
 
20 / 12 (1) ++
Registriert seit: 21.09.2005
Ort: Kiev
А я пользуюсь вот этой Тулзой. Мне нравится.
Angehängte Dateien
Dateityp: zip tools.zip (90,8 KB, 203x aufgerufen)
Stichworte
winapi, панель задач, инструменты, интерфейс

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[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

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 19:38 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.