|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.03.2008, 14:35 | #1 |
Грызун Гранита
Пользователь
Регистрация: 25.01.2008
Сообщений: 33
|
DBGridEh - поле с картинками. (как задать правильное значение)
Доброго времени суток, уважаемые господа Программисты!
Есть у меня таблица, и соответственно DBGridEh. В нём есть возможность отображения картинок. Подставляю в свойство ImageList, поля State нужный TImageList. В нём всего 2 картинки с индексами 0 и 1. Само поле State сделал вычисляемым. И написал такой вот обработчик события: Код:
Когда пробую присвоить к вычисляемому полю значение без Edit(), Post() происходит соответствующая ошибка, мол "таблица не может редактироваться, если не находится в режиме редактирования". Помогите найти правильное решение, надо-то мало. Просто в той строке, где поле "Client_Id_new" равно null или 0, должна отображаться картинка с индексом 0, если поле заполнено соответствующим индексом, то должна отобразиться картинка с индексом 1. Пожалуйста, если не трудно, опишите процесс поподробнее, ибо с подобными задачами раньше не сталкивался. Зарание спасибо! |
21.03.2008, 14:46 | #2 | |
Грызун Гранита
Пользователь
Регистрация: 25.01.2008
Сообщений: 33
|
Есть у меня информация такого содержания:
Цитата:
|
|
21.03.2008, 16:01 | #3 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Почитайте о вычисляемых полях, в особенности - где рекомендуется делать собственно вычисление (непонятно, зачем делать эдит/пост, если поле у вас действительно вычисляемое???).
Соответственно, ваш код избавится, наконец, от циклических вызовов самого себя и. как следствие - исчезнет мерцание... (Вы уж, бога ради, хотя бы в события перерисовки не вводите эдит/пост) |
23.03.2008, 06:54 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
mihali4 +1 Полностью согласен!!
в принципе, уже можно было бы и промолчать, но хочу кое-что разжевать и кое-что добавить... 1) для вычисляемых полей - в датасете есть событие OnCalcFields в него пишете код без всяких пост/едит! Код:
2) вычисляемые поля подобного рода иногда очень удобно сделать невычисляемыми - точнее получать их прямо в SQL запросе. Например, можно добавить в SELECT: select <тут ваши поля>, case Client_ID_New when 0 then 1 else 0 end as Calc_STATE FROM .... поле CALC_STATE и будет Ваше STATE (в запросе я другое имя дал просто для примера - может быть и STATE) Последний раз редактировалось Serge_Bliznykov; 23.03.2008 в 07:12. Причина: забыл, что процедуру onCalcFields передаётся датасет, исправил код... |
25.03.2008, 06:26 | #5 |
Грызун Гранита
Пользователь
Регистрация: 25.01.2008
Сообщений: 33
|
Читая Ваши посты, в очередной раз убедился что я пытался сделать глупость=) Сам над собой посмеялся.
2 Serge_Bliznykov: Большое Вам спасибо за объяснение, все действительно очень просто. В следующий раз попытаюсь в два раза больше подумать и в два раза больше книг прочесть, прежде чем постить на форуме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Присвоить значение поле в DBGrid'e компоненту DBLookupComboBox2 | фЁдОр | БД в Delphi | 14 | 07.09.2012 14:26 |
проблема с картинками | sava28 | HTML и CSS | 3 | 05.08.2008 16:23 |
бд с картинками | TaTT DoGG | БД в Delphi | 3 | 28.04.2008 08:21 |
Вопрос про правильное написание функции | AndreichSB | Microsoft Office Excel | 6 | 25.12.2006 19:27 |
Работа с картинками в Delphi | Alar | Общие вопросы Delphi | 0 | 29.10.2006 21:21 |