Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

OnCalcFields как выполнить только для текущей записи? [D7, MSSQL]


Manfred8 ©   (2005-05-16 16:47:00) 

Опытным путем выяснил что OnCalcFields  выполняется для всех записей находящихся в гриде,не в датасете а именно в гриде..

Задача - управлять значением калькулейт поля типа boolen.

Выбираю какое значение ему присвоить вызываю Locate на запись чье поле меняю,далее происходит переход к  OnCalcFields который выполняется столько раз сколько записей в гриде*2.. в обработчике выполняются довольно ресурсоемкие операции и потому хотелось бы сократить время затрачиваемое на их выполнение..
Собственноо вопрос как ограничить кол-во вызовов OnCalcFields,как сделать чтобы вызвался только для текущей записи?


msguns   (2005-05-17 11:42:00) [1]

1. Убрать OnCalcFields
2. Создать доп.колонку, в которую не назначать поле НД
3. Для текущей записи считать и рисовать в доп.колонке подсчитанное значение в событии грида OnDrawColumnCell


Prohodil Mimo   (2005-05-17 11:17:00) [2]

А AutoCalcFields:=False не поможет?


Ega23   (2005-05-16 18:25:00) [3]

To Ega23 Недопонял :)  ?

Задача - управлять значением калькулейт поля типа boolen.

На уровне выборки и управляй. Зачем делать Calculate для Calculated поля???


Johnmen   (2005-05-16 17:15:00) [4]

>Manfred8   (16.05.05 17:10) [6]

Ну да. Идет неявное обращение к записям...
Проверяй в ОнКалкФилде ControlsDisabled


Manfred8   (2005-05-16 17:10:00) [5]

Удалено модератором
Примечание: следи за языком.


Manfred8   (2005-05-16 17:06:00) [6]

To Ega23 Недопонял :)  ?


Johnmen   (2005-05-16 17:05:00) [7]

OnCalcFields вызывается только тогда, когда есть явное или неявное обращение в вычисляемому полю. Напр.для отрисовки в гриде.
Поэтому DisableControls EnableControls.


Ega23   (2005-05-16 17:04:00) [8]

Собственноо вопрос как ограничить кол-во вызовов OnCalcFields,как сделать чтобы вызвался только для текущей записи?

В выборку поле добавить?


Manfred8   (2005-05-16 16:59:00) [9]

я в курсе ,но если прикрепить к датасету грид то получаем то о чем было написано


Polevi   (2005-05-16 16:52:00) [10]

в "гриде" OnGetText выполняется
OnCalcFields - для датасета


Наверх

Титульная страница Поиск, карта сайта Написать письмо