Есть Decimal поле для цены в одном из проектов. Есть на форме 2 spinEdit, рубли и копейки соответственно.
Чтение из базы
Получение дробной части из Float(Real)
1 2 3 4 5 6 7 8 |
function TUniShopMilkAdminGoodsFrameMC.GetRestOfFloat(ASomeFloat: real): integer; var s:string; begin ASomeFloat:=frac(ASomeFloat); str(ASomeFloat:0:2,s); Result:=strtoint(copy(s,pos('.',s)+1,6)); end; |
Получение целой и дробной частей для загрузки на форму
1 2 |
seRUB.Value:=Trunc(FCurrentGoodParams.Price); seKopeek.Value:=GetRestOfFloat(FCurrentGoodParams.Price); |
Запись в базу
1 2 3 4 5 6 7 8 9 10 11 12 |
function TUniShopMilkAdminGoodsFrameMC.GetPriceFromForm:real; var Rub,Kopeek:real; begin with MainForm.AdminFrame.GoodsFrame do begin Rub:=StrToFloat((seRUB.Value.ToString)); Kopeek:=StrToFloat((seKopeek.Value/100).ToString); Result:=Rub+Kopeek; StrToFloat((seRUB.Value.ToString)+FloatToStr(Kopeek)); end; end; |