14.03.2006, 13:22 | #1 |
Участник
|
displayOption и обновление формы
Есть форма с гридом. Хотелось бы чтобы если введенное пользователем в некоторое поле значение больше некоторой величины, то строка становилась красной. Перекрыл метод displayOption, но вот только проблема - строка меняет цвет, если выйти из формы и снова в нее зайти. Каким образом нужно обновить форму, чтобы выполнился метод displayOption?
|
|
14.03.2006, 13:35 | #2 |
Участник
|
может там super(...) нужен.
|
|
14.03.2006, 14:06 | #3 |
SAP
|
Ну, при каждой загрузки формы, в методе таблици DS нада вставить проверку твоего условия,
и если оно совподает красить твои строки, и при каждой новой загрузку строки буду покрашены |
|
14.03.2006, 14:15 | #4 |
Модератор
|
В том-то и дело, что не срабатывает - только при перерисовке всего грида. Помню, пробовал вызывать принудительно ctrlGrid.displayOptions(record) - но это всего лишь настройка отображения... кажется, не сработало.. Приходилось делать ресерч с позиционироваием на запись...
С Уважением, Георгий |
|
14.03.2006, 14:50 | #5 |
Участник
|
2 KMV метод super есть
2 konopello не очень понял о чем ты, по-моему мы говорим о разных вещах 2 George Nordic может я что-то не так делаю, но ресерч тоже не работает. Странно получается - если при запуске формы строки раскрашиваются, неужели нельзя выполнить это действие с помощью какого-нибудь метода? |
|
14.03.2006, 14:56 | #6 |
SAP
|
Могу посоветовать посмотреть в модуле "Управление персоналом" карточка сотрудника,
там принятые работники отбражаются одним цветом, уволеные другим, а цвета задаются в модуле управление персоналом |
|
14.03.2006, 14:57 | #7 |
Участник
|
Можно так попробовать:
В метод modified нужного поля вставляем код: if (set) таблица_DS.clearDisplayOption(таблица) должно работать. |
|
14.03.2006, 15:03 | #8 |
SAP
|
Все то о чем идет реч риализовано в форме EmplTable
|
|
14.03.2006, 15:28 | #9 |
Участник
|
2 KMV к сожалению, так тоже не работает
2 konopello проблема не в том как раскрасить строки, проблема в том как перекрасить их не закрывая форму. Например, на складе есть 5 ед., пользователь заказал 7. хочется чтобы строка стала красной сразу после сохранения записи, а не тогда, когда он закроет форму и откроет ее снова |
|
14.03.2006, 15:42 | #10 |
Модератор
|
Цитата:
Сообщение от Lucky13
хочется чтобы строка стала красной сразу после сохранения записи, а не тогда, когда он закроет форму и откроет ее снова
Код: public void write() { super(); this.clearDisplayOption(this.cursor()); }
__________________
-ТСЯ или -ТЬСЯ ? |
|
14.03.2006, 15:51 | #11 |
Дмитрий Ерин
|
Вот у себя нашел такой кусок:
... formDataSource.clearDisplayOption(markedRecord); formDataSource.findRecord(currentRecord); formDataSource.refresh(); ... Делал давно, точно уже сказать не смогу, почему именно так (да и копаться не охота) но вроде работает! Возможно, рефрешил я там для других целей, а может именно из-за раскраски...
__________________
|
|
|
За это сообщение автора поблагодарили: Dimk (1), x-act (0). |
14.03.2006, 16:58 | #12 |
Участник
|
2 Vadik так тоже не работает
2 Ruff идея хорошая, но чтобы это заработало я думаю этих строк мало. У меня такая мысль: Чтобы строка раскрасилась нужно выполнить метод displayOption чтобы применить новые значения цвета (при открытии формы это делается при фетче данных) и обновить форму. findRecord я думаю в моем случае не поможет (искомая запись всегда есть в кэше и нового фетча не будет). DS.refresh возможно поможет если правильно выполнить displayOption. Может кого-то это натолкнет на здравую мысль |
|
14.03.2006, 17:17 | #13 |
Участник
|
Цитата:
Сообщение от Lucky13
Чтобы строка раскрасилась нужно выполнить метод displayOption чтобы применить новые значения цвета
|
|
14.03.2006, 17:34 | #14 |
Участник
|
2 KMV Хотелось бы в это верить, но это к сожалению не так. Если поставить точку оствнова в методе displayOption и вызвать clearDisplayOption, то видно, что displayOption не вызывается, а если сделать фетч (достаточно перейти к последней записи, а потом вернутся к нужной, если конечно записей много), то displayOptions выполнится.
Пробовал вызвать displayOption явно PHP код:
|
|
14.03.2006, 17:52 | #15 |
Участник
|
Думаю Вы ошибаетесь.
Посмотрите форму tutorial_Form_DisplayOptions. Там поставьте точку останова в displayOption и нажмите на кнопочку и смотрите стек вызова. |
|
|
За это сообщение автора поблагодарили: Lucky13 (1). |
15.03.2006, 08:54 | #16 |
Участник
|
Все получилось. Всем спасибо за ответы.
Простой вызов ds.clearDisplayOption(record) все решает. |
|
21.11.2008, 14:13 | #17 |
Участник
|
Сидел, медитировал над формой 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);
} |
|
21.11.2008, 14:30 | #18 |
MCTS
|
element.redraw(); может поможет?
|
|
21.11.2008, 14:38 | #19 |
Участник
|
|
|
21.11.2008, 14:45 | #20 |
MCTS
|
Так ведь цвет вроде условием в датасорсе определяется:
Примерно так надо написать: 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, законченный пример, раскраска строк, интерфейс |
|
|