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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.07.2008, 07:41   #1  
pwp is offline
pwp
Участник
 
76 / 16 (1) ++
Регистрация: 08.07.2008
Адрес: Обнинск
? Координаты формы на рабочем поле MDAX 4.0
Уважаемые специалисты. Подскажите пож-та, как определить реальные координаты скажем lef/top формы, если она размещена системой автоматически. Если задать ее координаты в свойствах, то это получается, но при работе в авт. режиме-нет. Это нужно для возможных размещений подчиненных форм типа диалог\инфо не где либо, а на работающей форме. Спасибо.
Старый 17.07.2008, 09:24   #2  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Если только найти нужное окно с помощью WinAPI::FindWindow, а потом получить его координаты с помощью WinAPI::GetWindowPos. Думаю должно получиться
Старый 17.07.2008, 09:31   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от pwp Посмотреть сообщение
Это нужно для возможных размещений подчиненных форм типа диалог\инфо не где либо, а на работающей форме.
Диалог "НА форме"? Это как? Может быть, вы имели в виду "НАД работающей формой"?
Если именно "над формой", то сейчас диалог так и показыается "над активной формой".

Скорее всего, ваша хотелка вызвана тем, что вы работаете с DAX4 и выше, вы программист, копилируете класс, во время компиляции автоматически открывается окно "Сообщения компилятора", это окно становится активным, диалог рисуется над этим окном, а не над вашим. Если так, то перестаньте заниматься ерундой. У пользователей такой ситуации не должно возникать.

Если ваша хотелка вызвана тем, что вы вручную в коде управляете фокусом и активным окном, то опять же перестаньте заниматься ерундой - правильно работайте с фокусом. В стандартном функционале диалог показываеется НАД активным окном.
__________________
полезное на axForum, github, vk, coub.
Старый 17.07.2008, 09:33   #4  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от pwp Посмотреть сообщение
Уважаемые специалисты. Подскажите пож-та, как определить реальные координаты скажем lef/top формы, если она размещена системой автоматически. Если задать ее координаты в свойствах, то это получается, но при работе в авт. режиме-нет. Это нужно для возможных размещений подчиненных форм типа диалог\инфо не где либо, а на работающей форме. Спасибо.
WinAPI::getWindowRect(hwnd)
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 17.07.2008, 09:33   #5  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Зачем Вам это понадобилось?

Вы раньшк на Delphi программировали?

С Уважением,
Георгий
Старый 17.07.2008, 10:40   #6  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Действительно, зачем такое могло понадобиться?

А в АХ4 функции
X++:
formRun.design().leftValue();
formRun.design().topValue();
уже не работают, что-ли?
Старый 17.07.2008, 11:10   #7  
pwp is offline
pwp
Участник
 
76 / 16 (1) ++
Регистрация: 08.07.2008
Адрес: Обнинск
Спасибо.

To Lucky13 & blokva - попробую, похоже должно сработать. Хотелось бы общаться с фунциями
Х++ без WinApi, но уж если никак .....

To Georg Nordic : на Delphi нет, есть неб. опыт на Java

To vallys : это работает если в свойствах формы установлено не auto, я же писал.

To mazzy : Да , я неправ, конечно НАД работающей формой.
Вопрос о компиляции не стоит, это выполнение формы. Я сам в окнах разберусь, а клиенту
хотелось бы дать новое окно ближе к активной форме, а лучше на ней.
<В стандартном функционале диалог показываеется НАД активным окном.> - это я заметил,
хотелось бы этим и другими окнами (похожим на диалог) управлять.

То ALL : спасибо еще раз.
Старый 17.07.2008, 11:21   #8  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от pwp Посмотреть сообщение
To vallys : это работает если в свойствах формы установлено не auto, я же писал.
Ну значит в четверке эти функции уже не работают... точнее не так работают (в тройке работают независимо от значений leftMode и topMode). Поэтому и спросил. Спасибо за ответ. Значит если программировать на тройке с учетом апгрейда до четверки, то функции leftValue и topValue без параметров использовать не рекомендуется... Ох, что-то здесь не так...
Старый 17.07.2008, 12:50   #9  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от vallys Посмотреть сообщение
Ну значит в четверке эти функции уже не работают... точнее не так работают (в тройке работают независимо от значений leftMode и topMode). Поэтому и спросил. Спасибо за ответ. Значит если программировать на тройке с учетом апгрейда до четверки, то функции leftValue и topValue без параметров использовать не рекомендуется... Ох, что-то здесь не так...
Точно не так
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 17.07.2008, 16:22   #10  
pwp is offline
pwp
Участник
 
76 / 16 (1) ++
Регистрация: 08.07.2008
Адрес: Обнинск
Цитата:
Сообщение от vallys Посмотреть сообщение
Ну значит в четверке эти функции уже не работают... точнее не так работают (в тройке работают независимо от значений leftMode и topMode). Поэтому и спросил. Спасибо за ответ. Значит если программировать на тройке с учетом апгрейда до четверки, то функции leftValue и topValue без параметров использовать не рекомендуется... Ох, что-то здесь не так...
Граждане, я ведь могу и ошибиться. Сами понимаете,опыта пока мало. Через
formRun.design()...... я пробовал, извлечь координаты, вышло только тогда, когда
явно их устанавливал в свойствах (а это не годится). Может что и накосячил, с литературой худо. Так что делать вывод что что то не работает в 4.0 рано.
Еще раз попробую и доложу.
Цитата:
Сообщение от blokva
Странно но у меня работает даже если в свойствах Design формы координаты стоят "Auto
Вы не смогли бы привести код ?
Цитата:
Сообщение от blokva
.....Просто не ведитесь на такие "хотелки" клиента....
Это точно идет не от клиента, это я сам себя озадачил.
Спасибо за содействие.
Старый 17.07.2008, 12:49   #11  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от pwp Посмотреть сообщение
To vallys : это работает если в свойствах формы установлено не auto, я же писал.
Странно но у меня работает даже если в свойствах Design формы координаты стоят "Auto"

DAX 4.0.2503.284
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 17.07.2008, 16:42   #12  
pwp is offline
pwp
Участник
 
76 / 16 (1) ++
Регистрация: 08.07.2008
Адрес: Обнинск
?
Цитата:
Сообщение от blokva Посмотреть сообщение
Странно но у меня работает даже если в свойствах Design формы координаты стоят "Auto" DAX 4.0.2503.284
Вдогонку :

Форма RHRMOrderTransList1
public class FormRun extends ObjectRun
{
RHRMJournalType orderType; // типы приказов
…………………….
Form f;
ComExcelDocument_RU doc;
int itop,ileft;
}

Метод Run формы RHRMOrderTransList1 :

public void run()
{
super();
f = this.form();
itop = f.design().topValue();
ileft = f.design().leftValue();
info (int2str(itop)+"/"+int2str(ileft)+"/"+f.name());
}

Выдача из Run :
Информация:
0/0/RHRMOrderTransList1

И все время нули !!!! А когда в свойствах формы явные координаты - то они и здесь
выводятся !
Старый 17.07.2008, 17:51   #13  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Ну ведь сказали уже как делать:

Цитата:
public void init()
{
container rect;
;
super();

rect = WinApi::getWindowRect(element.hWnd());
info(strfmt("%1 %2 %3 %4", conpeek(rect, 1), conpeek(rect, 2), conpeek(rect, 3), conpeek(rect, 4)));
}
Цитата:
Хотелось бы общаться с фунциями
Х++ без WinApi
Чем так ненавистен WinApi?
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 17.07.2008, 19:03   #14  
pwp is offline
pwp
Участник
 
76 / 16 (1) ++
Регистрация: 08.07.2008
Адрес: Обнинск
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
Чем так ненавистен WinApi?
Ну ненависти к нему я не исп.и.тываю, это очень круто сказано. Просто я с этим пока не работал, возможно придется.
Попробовал Ваш код, все получается. Спасибо.
Старый 17.07.2008, 11:40   #15  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Нет, я без претензий. Просто не ведитесь на такие "хотелки" клиента.

Потом проблем не оберешься.

Система должна решать поставленную задачу.

С Уважением,
Георгий
Старый 18.07.2008, 08:29   #16  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Вы не смогли бы привести код ?
вот скриншоты
Миниатюры
Нажмите на изображение для увеличения
Название: 2222.jpg
Просмотров: 355
Размер:	17.8 Кб
ID:	3581  
Изображения
  
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/

Последний раз редактировалось blokva; 18.07.2008 в 08:32.
За это сообщение автора поблагодарили: pwp (1).
Старый 18.07.2008, 10:13   #17  
pwp is offline
pwp
Участник
 
76 / 16 (1) ++
Регистрация: 08.07.2008
Адрес: Обнинск
Цитата:
Сообщение от blokva Посмотреть сообщение
вот скриншоты
-------------------------------------------------------------------------------------
Вместе с Вашим кодом и WinApi :
public void run()
{
container rect;
;
super();
rect = WinApi::getWindowRect(element.hWnd());
info(strfmt("%1 %2 %3 %4", conpeek(rect, 1), conpeek(rect, 2), conpeek(rect, 3), conpeek(rect, 4)));

info ('BLOKVA.run='+int2str(this.design().topValue())+'/'+int2str(this.design().leftValue()));
// почему не работает этот код ?
f = this.form();
itop = f.design().topValue();
ileft = f.design().leftValue();
info ('f=this.form()-'+int2str(itop)+"/"+int2str(ileft)+"/"+f.name());
}

-------------Не получается скопировать из окна инфо, перепишу :
280 286 1093 619 - это через WinApi
forum.run = 190/19
f=this.form()- 0/0/RHRMOrderTransList1
---------------------------------------------------------
Ваш код работает, а который накопал я нет.Вроде они почти одинаковы.В чем дело? Кстати, через WinApi данные похуже, т.к. они не учитывают, по моему, меню слева.
Старый 18.07.2008, 11:06   #18  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от pwp Посмотреть сообщение
Ваш код работает, а который накопал я нет.Вроде они почти одинаковы.В чем дело? Кстати, через WinApi данные похуже, т.к. они не учитывают, по моему, меню слева.
Какие же они одинаковые - this.form.design имеет тип FormBuildDesign, а this.design - FormDesign. То что у этих классов есть одинаковые свойства не значит что они будут возвращать одинаковые значения.
За это сообщение автора поблагодарили: pwp (1).
Старый 18.07.2008, 13:19   #19  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Какие же они одинаковые - this.form.design имеет тип FormBuildDesign, а this.design - FormDesign. То что у этих классов есть одинаковые свойства не значит что они будут возвращать одинаковые значения.
Да конечно.
И еще, кто-то на форуме говорил или еще где-то слышал, что "вживую" надо работать только с объектами классов в которых есть волшебное сочетание "Build" при прочих равных
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/

Последний раз редактировалось blokva; 18.07.2008 в 13:26.
Старый 18.07.2008, 15:42   #20  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Кстати, через WinApi данные похуже, т.к. они не учитывают, по моему, меню слева.
Они такие, какие вы попросили.
getWindowRect - взять экранные координаты окна (абсолютные).
getClientRect - взять координаты относительно родительского окна (видимо как раз то, что аксапта возвращает).
ClientToScreen, ScreenToClient - переводы координат из одних в другие (относительные в абсолютные и наоборот).
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
OZKA's DAX Journal: Модификация формы "Должностные лица". Blog bot DAX Blogs 0 30.09.2008 22:05
Косяк в логике работы формы DimensionsLookup gl00mie DAX: Программирование 0 11.03.2008 20:05
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Создание feature key на поле формы tov DAX: Администрирование 11 30.06.2003 15:49
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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