|  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, законченный пример, раскраска строк, интерфейс | 
|  | 
| 
 |