![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dxDBGrid событие смены активного колумна [D6, IB6.x]
korvin © (2004-01-13 09:21:00)
При выходе из колонки таблицы нужно выполнить некоторые действия. Помогите определить этот момент (не вижу такого события). В принцыпе не имеет значения какая именно колонка потеряла фокус, главное сам факт.
Silver_ (2004-01-14 13:49:00) [1]
> особенно если имелись округления копеек.
Не понял сегодня округлённой суммой, подщитал один итог а завтра другой.
Вычсляемое поле тоже ВСЕГДА будет округлять одинаково, если ты конечно в проге не изменил этого, но тут ТЫ царь и бог, если хочешь :)
Мораль: Не имеет смысла хранить то что можно вычислить, за исключением некоторых ситуаций, ну например если вичисления ну очень много времени и сил компа отбирает :)
Desdechado (2004-01-14 10:47:00) [2]
именно, ИНОГДА.
а так вычисляемые поля (calculated) именно для этой цели предназначены (как в БД, так и на клиенте - хоть и смысл несколько разный при этом :).
kaif (2004-01-14 01:16:00) [3]
Я для этой цели использую событие, отрабатываемое OnDataChange компонентом TDataSource.
Это событие хорошо тем, что в качестве параметра передается указатель на TField. При простой прокрутке передается nil. После редактирования любого поля передается конкретный указатель на поле, которое было отредактировано.
Я обычно анализирую (спомощью пары if-ов), какое поле изменялось, и, в зависимости от этого, обновляю поле суммы, к примеру:
if (Field = MyPriceField) or
(Field = MyQuantityFireld) then
MyAmountField.AsCurrency :=
MyPriceField.AsCurrency * MyQuantityFireld.AsCurrency;
Этот подход тем хорош, что в этот момент сам DataSet всегда еще находится в состоянии редактирования.
Silver_ © (14.01.04 00:09) [8]
А для этого ваще надо вычисляемое поле юзать, так что ты не в ту сторону копаеш
Не всегда. Иногда полезно хранить в базе данных поле суммы, особенно если имелись округления копеек.
Silver_ (2004-01-14 00:09:00) [4]
А для этого ваще надо вычисляемое поле юзать, так что ты не в ту сторону копаеш
Johnmen (2004-01-13 18:16:00) [5]
Post ?
korvin (2004-01-13 18:13:00) [6]
> Вот я и говорю, как будешь ловить OnColExit, если вниз/вверх ...:)
Нет ребята, скрол мне не мешает, скорее он тут даже не при чём. Грубый пример: количество, цена, сумма. При вводе количества и цены вычислить значение суммы. При скроле эта операция пройдёт без сучка ... А вот как добится такого не уходя с записи????
> OnChangeColumn?
Да, что-то вроде этого ... На скорую руку попробовал - вроде оно. Сенкс.
Vlad (2004-01-13 16:45:00) [7]
> korvin © (13.01.04 16:35) [3]
OnChangeColumn?
Johnmen (2004-01-13 16:39:00) [8]
Вот я и говорю, как будешь ловить OnColExit, если вниз/вверх ...:)
korvin (2004-01-13 16:35:00) [9]
> OnColExit - не смешно, я серьёзно спросил, а у dxDBGrid такого события нет
> А если переместились вниз/вверх? - нет, нужно провести пересчёт до скролинга и изменить значение в другом поле этой записи
Johnmen (2004-01-13 09:26:00) [10]
>korvin ©
А если переместились вниз/вверх ?
Anatoly Podgoretsky (2004-01-13 09:24:00) [11]
OnColExit