Tutarı yazarken formatlamak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
guney
Üye
Mesajlar: 88
Kayıt: 19 Ağu 2003 03:04
Konum: İstanbul

Tutarı yazarken formatlamak

Mesaj gönderen guney »

yazarken tutarları 1.000.000 şekilinde fomatlamak için ne yapmalıyım.

genelde ben field ın displayformatına #.### yazıyorum. ama yazarken değilde yazdıktan sonra formatlıyor .

ben tutarı yazarken o hemen formatlasın istiyorum .
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ben kendi izledigim yontemi anlatayım
dunku toplantıda da bahsi gecmisti
sayın kuri hocama gonderecektim zaten

RxLib icerisinde TCurrencyEdit isimli DbAware olmayan bir bilesen var
cok kullanuslı
DataSource nesnesinin OnDataChange olayına

Kod: Tümünü seç

  case  DataSource.State of
    dsBrowse : begin
                  //fiyat kutusu deaktif
                  edPrice.ReadOnly:= True;
                  //sadece browse modda iken fiyatı goster...
                  with frmDM do
                    if mtbPlu.RecordCount<>0 then
                       edPrice.Value:= mtbPluPrice.AsInteger;
               end;
    dsInsert,
    dsEdit   : begin
                  //fiyat kutusu aktif
                  edPrice.ReadOnly:= False;
               end;

  end;
ve Kaydet butonunun onClick olayına

Kod: Tümünü seç

  try
    frmDM.mtbPluPrice.Value:= StrToInt(DelChar(edPrice.Text,'.'));
  except
    frmDM.mtbPluPrice.Value:=0;
  end;
yazarak isimi hallediyorum
TCurrencyEdit ozellikleride
DecimalPlaces = 0
DisplayFormat = ',0 TL;-,0 TL'
FormatOnEditing = True
seklinde ayarlanınca gayet gusel calısıyor
yaptıklarımda hatalar olabilir ama ben kendi uygulamamda bu sekilde kullanıyorum
sorun falanda cıkmıyor
ama dersenizki gridde ben bunu yapmak istiyorum o zaman biraz daha kod yazarak (hem db baglantısını hem gridde gorunurluk)
gridin sanırım onDrawCell yada onDrawColumn olaylarına eklenebilir
orada da calısır diye tahmin ediyorum
Saygılar
guney
Üye
Mesajlar: 88
Kayıt: 19 Ağu 2003 03:04
Konum: İstanbul

Mesaj gönderen guney »

dostum bu TCurrencyEdit objesi delpihi 6 yok herhalde. programın altını üstüne getirdim . bulamadım.

varsa kasayol tuşunu göndersene :) (yanı ayrıntılı tarif et) benim gibiler için ayrıntı lazım biraz.

sağolasın
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

http://sourceforge.net/projects/rxlib/
delphi6 icin altlarda link goreceksin
guney
Üye
Mesajlar: 88
Kayıt: 19 Ağu 2003 03:04
Konum: İstanbul

Mesaj gönderen guney »

bu işin başka yolu yok mu?

standart component lerle olmuyor mu ?

yada kod ile ?
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

standart komponentlerden turetecegin bir komponent ile yapabilirsin
winapi ve mesajları kullanarak yeni bir edit hatta dbedit yaparsan olur
ama o kadar kolay degil
RxLib de kodlar acık bakabilirsin
adamlar nasıl yapmıslar diye
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Merhaba,

Ben normal bir edit için şöyle bir kod kullanıyorum.

procedure TForm1.EditChange(Sender: TObject);
var
a:string;
i:integer;
begin
if length(Tedit(Sender).text)>0 then begin
a:=Tedit(sender).text;
for i:=0 to length(a) do begin
delete(a,pos('.',a),1);
end;
keybd_event(vk_end,0,0,0);
keybd_event(vk_end,0,KEYEVENTF_KEYUP,0);
Tedit(sender).text:=FormatFloat('###,###',strtofloat(a))
end;


end;

bu şekilde yazarken 3 erli gurublara ayırabilirsin.

Kolay gelsin.
guney
Üye
Mesajlar: 88
Kayıt: 19 Ağu 2003 03:04
Konum: İstanbul

Mesaj gönderen guney »

verdiğin kod yazarken işe yarıyor

ancak ,yazıp o alandan cıkarken mesela şöyle bir hata veriyor
" 1.200.000 is not a valid floating point value for field Tutar "
ve geçmiyor.

Tutar alanı numerik bir field.

Bu sorunu nasıl aşabilirim?
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

noktaları silmen lazım
o sekilde tip donusumu yapacaksın
guney
Üye
Mesajlar: 88
Kayıt: 19 Ağu 2003 03:04
Konum: İstanbul

Mesaj gönderen guney »

noktaları kaldırınca formatlamanın ne espirisi kalıyor kı.

hem yazarken hemde yazıktan sonra tutarın formatlı kalmasını istiyorum.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

tablonun beforepost unda noktaları kaldırırsan problem kalmaz.
guney
Üye
Mesajlar: 88
Kayıt: 19 Ağu 2003 03:04
Konum: İstanbul

Mesaj gönderen guney »

dbedit alanına yukarıda arkadaşın verdiği kod ile yazarken formatlıyor.ancak o edit alanında cıkınca (post etmiyorum yanı) hemen hata veriyor (yukarıda yazdım hata mesajını)

yanı hatayı post ederken yapmıyor.

kısacası sorunu özetlersek
1- yazarken formatlı yazacak (bunu cözdük)
2- yazma işlemi sonunda o alan aynı şekil de formatlı kalacak
3- ve o formatlı halı ile post edebilecem
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

:)
Selam

1. Madde OK
2. Madde OK
3. Madde ERROR

Eğer sayısal aln tutuyorsan olmaz :!:
Onun yerine sayısal alnlarını da string hale getir db'de formatlı dursun ama bu da sana pahalıya gelir çünkü her işlem yapacağın zaman stringlerden noktalama işaretlerini kaldırıp sayısala çevireceksin vs. vs. vs.

Bu sebeple olmaz..

Hemen hemen bütün programcılar ekrana gösterirken formatlama yaparlar, DB'de dururken sayısal olarak kaydederler. Bahsettiğiniz şekilde yapan var mı bilmiyorum. Hepimizin sıkıntısını çektiğimiz bir hammaliyet ne yazık ki.

Kolay gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Cevapla