Tutarı yazarken formatlamak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Tutarı yazarken formatlamak
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 .
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 .
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
ve Kaydet butonunun onClick olayına
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
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;
Kod: Tümünü seç
try
frmDM.mtbPluPrice.Value:= StrToInt(DelChar(edPrice.Text,'.'));
except
frmDM.mtbPluPrice.Value:=0;
end;
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
http://sourceforge.net/projects/rxlib/
delphi6 icin altlarda link goreceksin
delphi6 icin altlarda link goreceksin
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.
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.
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
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

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/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/