21.11.2012, 19:03 | #1 |
Administrator
|
Как поменять выравнивание поля на форме в runtime? (AX 2009)
Честно говоря, думал, что это просто, но не выходит
Для тестирования сделал простую форму. Добавил на неё один FormStringControl. Никакие свойства, кроме AutoDeclaration, ему не менял. В метод run() добавил одну строчку: X++: public void run() { super(); stringEdit.alignment(FormAlignment::AlignmentRight); } Может быть кто-нибудь сталкивался с такой проблемой? А может кто-то даже решил? Спасибо. 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 |
Британский учённый
|
Я умею только так:
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 |
Участник
|
X++: Element.redraw(); |
|
21.11.2012, 19:52 | #4 |
Administrator
|
Цитата:
Представьте, что у меня на форме ещё есть 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 |
Administrator
|
__________________
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 |
Administrator
|
В общем, пока задачу я решил так:
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 |
Участник
|
Выравнивание через АХ нельзя уже поменять после super() в init()
Поэтому WinAPI - ваш вариант |
|
|
|