Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

dxDBGrid событие смены активного колумна   Найти похожие ветки 

 
korvin ©   (2004-01-13 09:21) [0]

При выходе из колонки таблицы нужно выполнить некоторые действия. Помогите определить этот момент (не вижу такого события). В принцыпе не имеет значения какая именно колонка потеряла фокус, главное сам факт.


 
Anatoly Podgoretsky ©   (2004-01-13 09:24) [1]

OnColExit


 
Johnmen ©   (2004-01-13 09:26) [2]

>korvin ©

А если переместились вниз/вверх ?


 
korvin ©   (2004-01-13 16:35) [3]

> OnColExit - не смешно, я серьёзно спросил, а у dxDBGrid такого события нет

> А если переместились вниз/вверх? - нет, нужно провести пересчёт до скролинга и изменить значение в другом поле этой записи


 
Johnmen ©   (2004-01-13 16:39) [4]

Вот я и говорю, как будешь ловить OnColExit, если вниз/вверх ...:)


 
Vlad ©   (2004-01-13 16:45) [5]


> korvin © (13.01.04 16:35) [3]

OnChangeColumn?


 
korvin ©   (2004-01-13 18:13) [6]

> Вот я и говорю, как будешь ловить OnColExit, если вниз/вверх ...:)
Нет ребята, скрол мне не мешает, скорее он тут даже не при чём. Грубый пример: количество, цена, сумма. При вводе количества и цены вычислить значение суммы. При скроле эта операция пройдёт без сучка ... А вот как добится такого не уходя с записи????

> OnChangeColumn?
Да, что-то вроде этого ... На скорую руку попробовал - вроде оно. Сенкс.


 
Johnmen ©   (2004-01-13 18:16) [7]

Post ?


 
Silver_ ©   (2004-01-14 00:09) [8]

А для этого ваще надо вычисляемое поле юзать, так что ты не в ту сторону копаеш


 
kaif ©   (2004-01-14 01:16) [9]

Я для этой цели использую событие, отрабатываемое 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]
А для этого ваще надо вычисляемое поле юзать, так что ты не в ту сторону копаеш


Не всегда. Иногда полезно хранить в базе данных поле суммы, особенно если имелись округления копеек.


 
Desdechado ©   (2004-01-14 10:47) [10]

именно, ИНОГДА.
а так вычисляемые поля (calculated) именно для этой цели предназначены (как в БД, так и на клиенте - хоть и смысл несколько разный при этом :).


 
Silver_ ©   (2004-01-14 13:49) [11]


> особенно если имелись округления копеек.


Не понял сегодня округлённой суммой, подщитал один итог а завтра другой.
Вычсляемое поле тоже ВСЕГДА будет округлять одинаково, если ты конечно в проге не изменил этого, но тут ТЫ царь и бог, если хочешь :)

Мораль: Не имеет смысла хранить то что можно вычислить, за исключением некоторых ситуаций, ну например если вичисления ну очень много времени и сил компа отбирает :)



Страницы: 1 вся ветка

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-16387
Varg
2004-01-23 17:13
2004.02.06
вызов номера версии


1-16307
Tosha
2004-01-25 19:15
2004.02.06
TRichEdit


1-16421
Tornado
2004-01-22 10:17
2004.02.06
Отчет в MS Word


8-16523
Женя
2003-10-01 05:47
2004.02.06
Изображение с веб.камеры.


6-16545
Simon
2003-12-02 20:16
2004.02.06
Как перехватить сетевой трафик?