![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Редактирование перед сохранением. [D6, dBase, FoxPro]
AleKo © (2005-01-19 09:00:00)Добрый день господа.
У меня закралось сомнение а правильно ли я делаю.
Имеется ClientDataSet с полями ftFloat? Данные отображаются на DBGridEh.
Необходимо что бы при любых введенных значениях в поле сохранялось число округленное до двух знаков после запятой.
12,345678 сохранится как 12,34
Делаю через событие поля
procedure TMainForm.CDSBazaCDSBazaFed_rSetText(Sender: TField;
const Text: String);
begin
try
SetRoundMode(rmTruncate);
Sender.Value:=RoundTo(StrToFloat(Text),-2);
finally
SetRoundMode(rmNearest);
end;
end;
Правильно ли я делаю. Может есть другие варианты. Спасибо.
Соловьев (2005-01-19 10:57:00) [1]OnBeforePost:
...
FieldByName('2Digit').AsFloat := RoundTo(FieldByName('2Digit').AsFloat,-2);
...
Danilka (2005-01-19 10:34:00) [2][2] Erik1 © (19.01.05 10:26)
Так даже лучше. Правда, все равно надо задавать формат, т.к. Currency 4 знака после запятой, а не 2.
Erik1 (2005-01-19 10:26:00) [3]Еще можно использовать тип поля Currency.
Danilka (2005-01-19 09:14:00) [4]В описании полей датасета, кажись в EditFormat (или что-то похожее, нету сейчас под рукой) напиши:
,0.00
и будет тебе щастье. :) ничего лишнего тогда просто не сможешь ввести.
А если в DisplayFormat добавишь, то еще и отображаться красиво будет.
Вобщем, почитай про свойства TField.