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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.11.2012, 19:03   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Как поменять выравнивание поля на форме в runtime? (AX 2009)
Честно говоря, думал, что это просто, но не выходит

Для тестирования сделал простую форму. Добавил на неё один FormStringControl. Никакие свойства, кроме AutoDeclaration, ему не менял. В метод run() добавил одну строчку:
X++:
public void run()
{
    super();
    stringEdit.alignment(FormAlignment::AlignmentRight);
}
И не работает! Alignment у контрола не меняется никак вообще.

Может быть кто-нибудь сталкивался с такой проблемой? А может кто-то даже решил?

Спасибо.

P.S.: Упражняюсь я на AX 2009. Версия клиента - 5.0.1000.52.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 21.11.2012, 19:36   #2  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Я умею только так:

X++:
public void init()
{
    FormBuildDesign     fbd;
    
;
    fbd = form.design();
    fbd.control(control::stringEdit).alignment(FormAlignment::AlignmentRight);

    super();
}
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 21.11.2012, 19:44   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,941 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
X++:
Element.redraw();
не помогает ?
Старый 21.11.2012, 19:52   #4  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Link Посмотреть сообщение
Я умею только так:

X++:
public void init()
{
    FormBuildDesign     fbd;
    
;
    fbd = form.design();
    fbd.control(control::stringEdit).alignment(FormAlignment::AlignmentRight);

    super();
}
К сожалению, это не runtime. Выравнивание меняется, но только до запуска формы. А хотелось бы уже после того, как она появилась.

Представьте, что у меня на форме ещё есть radio button, и я с его помощью хочу уметь менять выравнивание у stringEdit.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 21.11.2012, 19:52   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Logger Посмотреть сообщение
X++:
Element.redraw();
не помогает ?
Увы, нет.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 21.11.2012, 19:56   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
В общем, пока задачу я решил так:
X++:
public void run()
{
    int style;
    int alignment;

    #WinAPI
    #define.ES_LEFT(0)
    #define.ES_CENTER(1)
    #define.ES_RIGHT(2)

    super();

    alignment = #ES_RIGHT;
    
    style = WinAPI::getWindowLong(stringEdit.hWnd(), #GWL_STYLE);
    WinAPI::setWindowLong(stringEdit.hWnd(), #GWL_STYLE, style & ~(#ES_LEFT | #ES_CENTER | #ES_RIGHT) | alignment);
}
Но решение, мягко говоря, сложное. Может быть всё же кто-то предложит что-нибудь попроще?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: S.Kuskov (1), ex3em (1).
Старый 22.11.2012, 00:42   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Выравнивание через АХ нельзя уже поменять после super() в init()
Поэтому WinAPI - ваш вариант
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
mazzy: Создание отчета с возможностью перехода к форме в Dynamics AX 2009 Blog bot DAX Blogs 51 18.03.2015 04:11
axinthefield: Compatibility Testing for Microsoft Dynamics AX Blog bot DAX Blogs 0 23.06.2012 02:26
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35
JOPX: Dynamics AX 2009 - Enterprise Portal link bonanza Blog bot DAX Blogs 0 27.11.2008 01:05
Arijit Basu: AX 2009 Documents Blog bot DAX Blogs 0 30.08.2008 13:05

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

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

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