23.02.2020, 17:32 | #1 |
Участник
|
DAX2009: динамическое изменение св-ва label у StringEdit
Привет. Подскажите как реализовать.
Кратко: Есть форма и таблица, которая связанна с данной формой через DataSources. На форме на вкладке Основное присутствует Grid представляющий данную таблицу. На вкладке Разное присутствует StringEdit который отображает содержимое поля 1 выбранной записи на Grid. Что хочу: В зависимости от выбранной записи Grid менялось ЕЩЕ значение Label у StringEdit (во вкладке Разное). Значение Label берется из соответствующего поля 2 таблицы из DataSources. Как я думаю реализовать: Я так понял надо в классе формы создать табличную переменную данной таблицы. А потом переопределить метод pageActivated для вкладки Разное. И в данном методе через метод find данной таблицы находить выбранную запись (которая была выбрана на Grid). Вопрос только как найти значение RecId запись который пользователь выбрал на Grid? Или можно как то проще реализовать? Подскажите. Последний раз редактировалось oleggy; 23.02.2020 в 19:12. |
|
23.02.2020, 19:29 | #2 |
Участник
|
текущая выбранная запись уже доступна в переменной курсора с названием, соответствующим названием Data source на форме - искать её отдельно через find вам не надо
привязываться вам надо, на мой взгляд, не к pageActivated, а к active датасорса - то есть к смене выбранной записи (т.к. именно при этом судя по описанной задаче надо менять label у контрола) |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
23.02.2020, 20:30 | #3 |
Участник
|
Спасибо.
Допустим имя таблицы из DataSources - "MyTable", имя формы - "MyForm", имя StringEdit на этой форме - "MyTable_Field". Не совсем понял как правильно реализовать дальше: X++: public int active() { int ret; ret = super(); MyForm::find().MyTable_Field.Label = MyTable; // выдает ошибку 'Для функции было указано неверное число аргументов' return ret; } Последний раз редактировалось oleggy; 23.02.2020 в 20:51. |
|
23.02.2020, 21:21 | #4 |
Участник
|
Вы же сами пишете, что менять нужно свойство Label у элемента управления StringEdit, а в примере делаете что-то совершенно другое.
Чтобы из кода получить доступ к элементу управления, нужно в дизайнере включить у этого StringEdit свойство AutoDeclaration. Тогда нужный код будет выглядеть как-то так: X++: public int active() { int ret; ret = super(); StringEdit.Label(MyTable.Field2); return ret; } |
|
24.02.2020, 16:03 | #5 |
Участник
|
Спасибо за советы. Все сработало.
Дополнительный вопрос еще в продолжении данной темы: В таблице MyTable (из DataSources) есть поле Field3. Вопрос как мне из кода прочитать данные из Label у поля Field3 таблицы MyTable? (просто понадобилось описание поля для красивого оформления отчета в Report) |
|
24.02.2020, 17:07 | #6 |
Участник
|
SysDictField вам в помощь
|
|
24.02.2020, 17:10 | #7 |
Участник
|
Цитата:
Сообщение от oleggy
Спасибо за советы. Все сработало.
Дополнительный вопрос еще в продолжении данной темы: В таблице MyTable (из DataSources) есть поле Field3. Вопрос как мне из кода прочитать данные из Label у поля Field3 таблицы MyTable? (просто понадобилось описание поля для красивого оформления отчета в Report) X++: DictTable dt; DictField df; ; dt = new DictTable(tableNum(MyTable)); df = new DictField(dt.id(), dt.fieldCnt2Id(3)); df.label(); |
|
24.02.2020, 18:43 | #8 |
Участник
|
...
Последний раз редактировалось oleggy; 24.02.2020 в 20:02. |
|
25.02.2020, 12:35 | #9 |
Участник
|
fieldpname(MyTable , Field3)
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (5), SuperStar88 (1). |