Firebird ondalıklı sayı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
cinarbil
Üye
Mesajlar: 109
Kayıt: 18 Mar 2014 09:26

Re: Firebird ondalıklı sayı

Mesaj gönderen cinarbil »

Daha iyi bir öneri gelirse o değerlendirebilirisin.

formun uses kısmına

Kod: Tümünü seç

[/Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math; code]

math ekle

sonra yazdırma işleminden önce 
[code]if Trunc(yazdirilacak sayı) >0 then display format #,0.00  else display format #,0  


özetle yazdırılacak sayı ondalık kısmı 0 dan büyükse ondalıklı yaz yoksa tamsayı gibi yaz
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Kullanıcı avatarı
cinarbil
Üye
Mesajlar: 109
Kayıt: 18 Mar 2014 09:26

Re: Firebird ondalıklı sayı

Mesaj gönderen cinarbil »

Düzeltme

Trunc yerine

Frac kullanacaksın trunc sayının tam sayısı Frac ondalıklı tarafını geri gönderir.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Firebird ondalıklı sayı

Mesaj gönderen ertank »

DBGrid Event içinde "DrawDataCell" bulup içine aşağıdaki kodu ekleyerek deneyebilir misin? Anladığım kadarıyla senin alanların tablo içine dizayn zamanında eklenmiş durumda. Böyle olunca direk alan adına erişimin var demektir. Dikkat et aşağıda D_Data ile IB_PersonalP_ORAN arasında herhangi birşey yok. Bu yüzden DisplayFormat kullanabiliyorsun. Yoksa aşağıdaki kod hata verecektir.

Kendim test edemedim. Interbase ile ilgili sorun var bilgisayarımda. Çalışacağına emin olamıyorum.

Kod: Tümünü seç

procedure TForm2.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if Field.Name = 'IB_PersonelP_ORAN' then begin
    if  Frac(Field.Value) > 0 then
      D_DataIB_PersonelP_ORAN.DisplayFormat := '0.00'
    else
      D_DataIB_PersonelP_ORAN.DisplayFormat := '0';
  end;
end;
Cevapla