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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2006, 13:22   #1  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
displayOption и обновление формы
Есть форма с гридом. Хотелось бы чтобы если введенное пользователем в некоторое поле значение больше некоторой величины, то строка становилась красной. Перекрыл метод displayOption, но вот только проблема - строка меняет цвет, если выйти из формы и снова в нее зайти. Каким образом нужно обновить форму, чтобы выполнился метод displayOption?
Старый 14.03.2006, 13:35   #2  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
может там super(...) нужен.
Старый 14.03.2006, 14:06   #3  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Ну, при каждой загрузки формы, в методе таблици DS нада вставить проверку твоего условия,
и если оно совподает красить твои строки, и при каждой новой загрузку строки буду покрашены
Старый 14.03.2006, 14:15   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
В том-то и дело, что не срабатывает - только при перерисовке всего грида. Помню, пробовал вызывать принудительно ctrlGrid.displayOptions(record) - но это всего лишь настройка отображения... кажется, не сработало.. Приходилось делать ресерч с позиционироваием на запись...

С Уважением,
Георгий
Старый 14.03.2006, 14:50   #5  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
2 KMV метод super есть
2 konopello не очень понял о чем ты, по-моему мы говорим о разных вещах
2 George Nordic может я что-то не так делаю, но ресерч тоже не работает.

Странно получается - если при запуске формы строки раскрашиваются, неужели нельзя выполнить это действие с помощью какого-нибудь метода?
Старый 14.03.2006, 14:56   #6  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Могу посоветовать посмотреть в модуле "Управление персоналом" карточка сотрудника,
там принятые работники отбражаются одним цветом, уволеные другим,
а цвета задаются в модуле управление персоналом
Старый 14.03.2006, 14:57   #7  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Можно так попробовать:

В метод modified нужного поля вставляем код:

if (set)
таблица_DS.clearDisplayOption(таблица)

должно работать.
Старый 14.03.2006, 15:03   #8  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Все то о чем идет реч риализовано в форме EmplTable
Старый 14.03.2006, 15:28   #9  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
2 KMV к сожалению, так тоже не работает
2 konopello проблема не в том как раскрасить строки, проблема в том как перекрасить их не закрывая форму. Например, на складе есть 5 ед., пользователь заказал 7. хочется чтобы строка стала красной сразу после сохранения записи, а не тогда, когда он закроет форму и откроет ее снова
Старый 14.03.2006, 15:42   #10  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Lucky13
хочется чтобы строка стала красной сразу после сохранения записи, а не тогда, когда он закроет форму и откроет ее снова
Код:
public void write()
{
    super();
    this.clearDisplayOption(this.cursor());
}
__________________
-ТСЯ или -ТЬСЯ ?
Старый 14.03.2006, 15:51   #11  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Вот у себя нашел такой кусок:
...
formDataSource.clearDisplayOption(markedRecord);
formDataSource.findRecord(currentRecord);
formDataSource.refresh();
...
Делал давно, точно уже сказать не смогу, почему именно так (да и копаться не охота) но вроде работает! Возможно, рефрешил я там для других целей, а может именно из-за раскраски...
__________________
За это сообщение автора поблагодарили: Dimk (1), x-act (0).
Старый 14.03.2006, 16:58   #12  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
2 Vadik так тоже не работает
2 Ruff идея хорошая, но чтобы это заработало я думаю этих строк мало.

У меня такая мысль:
Чтобы строка раскрасилась нужно выполнить метод displayOption чтобы применить новые значения цвета (при открытии формы это делается при фетче данных) и обновить форму.
findRecord я думаю в моем случае не поможет (искомая запись всегда есть в кэше и нового фетча не будет). DS.refresh возможно поможет если правильно выполнить displayOption.
Может кого-то это натолкнет на здравую мысль
Старый 14.03.2006, 17:17   #13  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Цитата:
Сообщение от Lucky13
Чтобы строка раскрасилась нужно выполнить метод displayOption чтобы применить новые значения цвета
Точно! А formDataSource.clearDisplayOption(....) как раз и вызывает этод метод, и рефрешить и финдить нет необходимости.
Старый 14.03.2006, 17:34   #14  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
2 KMV Хотелось бы в это верить, но это к сожалению не так. Если поставить точку оствнова в методе displayOption и вызвать clearDisplayOption, то видно, что displayOption не вызывается, а если сделать фетч (достаточно перейти к последней записи, а потом вернутся к нужной, если конечно записей много), то displayOptions выполнится.
Пробовал вызвать displayOption явно
PHP код:
    FormRowDisplayOption op = new FormRowDisplayOption();
    ;
    
this.DisplayOption(recordop); 
но выдается ошибка: Объект (тот который второй параметр в displayOption) не имеет метода backColor, хотя в классе FormRowDisplayOption такой метод есть. В чем проблема непонятно
Старый 14.03.2006, 17:52   #15  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Думаю Вы ошибаетесь.

Посмотрите форму tutorial_Form_DisplayOptions. Там поставьте точку останова в displayOption и нажмите на кнопочку и смотрите стек вызова.
За это сообщение автора поблагодарили: Lucky13 (1).
Старый 15.03.2006, 08:54   #16  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Все получилось. Всем спасибо за ответы.
Простой вызов ds.clearDisplayOption(record) все решает.
Старый 21.11.2008, 14:13   #17  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
?
Сидел, медитировал над формой tutorial_Form_DisplayOptions, но так и не понял как решить мою задачу.

Есть форма с набором строк. По окончанию некой операции нужно что бы некоторые строки поменяли цвет. Пишу следующий код:

X++:
void doRefresh(container    _packedProcessSetUnion)
{
    SetEnumerator   enumerator = Set::create(_packedProcessSetUnion).getEnumerator();
    ;
 
    while (enumerator.moveNext())
    {
        Table_ds.clearDisplayOption(Table::findRecId(enumerator.current()));
        Table_ds.refreshEx(-1);
    }
 
}
Увы, результата ноль. В процессе медитации над «тюторилом» углядел единственное отличие моего кода от их:

X++:
 for (common = custTable_ds.getFirst(); common; common = custTable_ds.getNext())
        {
            custTable_ds.clearDisplayOption( common );
        }
        custTable_ds.refreshEx(-1);
    }
На сколько я понял, они полностью перебирают источник данных, в моем случае записей будет очень много. В таком случае вопрос, что будет хуже при большом кол-ве записей, подход реализованный в примере или executeQuery, затем findRecord(что бы вернуться на запись на которой находился пользователь до запуска процедуры) ?
Старый 21.11.2008, 14:30   #18  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
element.redraw(); может поможет?
Старый 21.11.2008, 14:38   #19  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
element.redraw(); может поможет?
Увы, не помог...
Старый 21.11.2008, 14:45   #20  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Так ведь цвет вроде условием в датасорсе определяется:

Примерно так надо написать:
X++:
public void displayOption(Common _common, FormRowDisplayOption _options)
{
    // here's the logic which derteminates the color for this row
    // In this case it will random color the lines
    if (set.in(common.RecId))
    {
        _options.backColor( backColor );
    }
    super(_common,_options);
}

Последний раз редактировалось Eldar9x; 21.11.2008 в 14:49.
Теги
cleardisplayoption, displayoption, законченный пример, раскраска строк, интерфейс

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обновление DataSource из формы Печать\Новый отчет. Poleax DAX: Программирование 19 13.04.2011 09:28
Обновление DS формы из дочерней формы breakpoint DAX: Программирование 3 24.12.2008 15:54
Обновление формы Andrux DAX: Программирование 2 26.09.2008 19:45
Обновление данных формы из другой формы DiZ DAX: Программирование 4 14.10.2004 11:39
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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