Para birimleri
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Para birimleri
yanlış anlamadıysam sen kullanıcı ne noktaya basın nede virgüle yazdıkça basamağına göre sen göstermek istiyorsun doğrumu?
Mücadele güzelleştirir!
Re: Para birimleri
Aynen kullanıcı rakam girdikçe nokta ve virgüller duruma göre pozisyonunu alacak yani otomatik girilecek, kodları bir yere kadar getirdim fakat takıldım kaldım.
Kod: Tümünü seç
function Izin(StrChar: String; Delimiter: Char): Integer;
var
Sxx: String;
X, J: Integer;
begin
Sxx := '';
Result := 0;
for X := 1 to Length(StrChar) do
begin
if StrChar[X] <> Delimiter then
Sxx := Sxx + StrChar[X]
else
begin
Inc(Result);
Sxx := '';
end;
for J := 1 to Length(StrChar) do
begin
Form1.caption := IntToStr(Length(StrChar));
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if (Izin(Edit2.Text, ',') >= 1) and (Not(Key in ['0' .. '9', '.', #8])) then
begin
Key := #0;
end;
if (Izin(Edit2.Text, '.') >= 1) and (Not(Key in ['0' .. '9', ',', #8])) then
begin
Key := #0;
end;
end;
Re: Para birimleri
Ekstra olarak exit yöntemi kullanabilirsin 1500 yazınca 1.500 oluyor buraya kadar sorun yok.
İşin içine küsurat girince sonuç sapıtıyor. 150030 bin beş yüz lira 30 kuruş oluyor, 150.030,00 bunu çözebilirsen istediğini yapabilirsin.
İşin içine küsurat girince sonuç sapıtıyor. 150030 bin beş yüz lira 30 kuruş oluyor, 150.030,00 bunu çözebilirsen istediğini yapabilirsin.
Kod: Tümünü seç
procedure TForm1.Edit1Exit(Sender: TObject);
begin
if (Length(Edit1.Text) > 2) and (Length(Edit1.Text) < 8 ) then
begin
Edit1.Text := Format('%n', [strtofloat(Edit1.Text)]);
end;
end;
En son brs tarafından 07 Tem 2017 08:55 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: Para birimleri
Yukarıdaki şekilde yapmanız mümkün değil. 3. örnek ile belirttiğiniz 1535 rakamının tamsayı mı yoksa 15,35 mi olduğunu sadece girilen rakam üzerinden bulmak mümkün değil. Bunu daha önce @freeman35 size açıklamaya çalıştı.Serhat yazdı:Olay şu, kullanıcı editten sayı girmeye başlayınca 123456 gibi
1. örnek sayı 15
0,15 olacak
2. örnek sayı 130
1,30 olacak
3. örnek sayı 1535
1.535 olacak
4. örnek sayı 250035
2.500,35 olacak
Ben bir şeyler yapmaya çalıştım ama olmadı bir süre sonra anlamsız durum ortaya çıkıyorKod: Tümünü seç
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (Length(Edit1.Text) = 1) and (Key <> #08) then begin Edit1.Text := Edit1.Text + '.'; Edit1.SelStart := Length(Edit1.Text); end; if (Length(Edit1.Text) = 5) and (Key <> #08) then begin Edit1.Text := Edit1.Text + ','; Edit1.SelStart := Length(Edit1.Text); end; end;
Şu koşul ile yapmak istediğiniz mümkün. Son 2 hane her zaman için kuruş olur. 1535 rakamını 153500 şeklinde girilmesi zorunludur. Bunun dışında benim önerdiğim ikili TEdit bileşeni veya @freeman35'in önderdiği para birimi Edit etmeye yarayan özel bir bileşen kullanmanız gerekir.
Re: Para birimleri
ertank yazdı:Yukarıdaki şekilde yapmanız mümkün değil. 3. örnek ile belirttiğiniz 1535 rakamının tamsayı mı yoksa 15,35 mi olduğunu sadece girilen rakam üzerinden bulmak mümkün değil. Bunu daha önce @freeman35 size açıklamaya çalıştı.Serhat yazdı:Olay şu, kullanıcı editten sayı girmeye başlayınca 123456 gibi
1. örnek sayı 15
0,15 olacak
2. örnek sayı 130
1,30 olacak
3. örnek sayı 1535
1.535 olacak
4. örnek sayı 250035
2.500,35 olacak
Ben bir şeyler yapmaya çalıştım ama olmadı bir süre sonra anlamsız durum ortaya çıkıyorKod: Tümünü seç
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (Length(Edit1.Text) = 1) and (Key <> #08) then begin Edit1.Text := Edit1.Text + '.'; Edit1.SelStart := Length(Edit1.Text); end; if (Length(Edit1.Text) = 5) and (Key <> #08) then begin Edit1.Text := Edit1.Text + ','; Edit1.SelStart := Length(Edit1.Text); end; end;
Şu koşul ile yapmak istediğiniz mümkün. Son 2 hane her zaman için kuruş olur. 1535 rakamını 153500 şeklinde girilmesi zorunludur. Bunun dışında benim önerdiğim ikili TEdit bileşeni veya @freeman35'in önderdiği para birimi Edit etmeye yarayan özel bir bileşen kullanmanız gerekir.
Size katılmıyorum, kullanıcı isterse ekler yani satılan ürün küsuratı varsa eklenir,
Örnek Ali'nin maaşı
1.500 TL
yada
1.500 TL 30 Kuruş olamaz mı?
Bu arada neden ikici bir edit olsun ki tekbir edit işi görür
En son brs tarafından 07 Tem 2017 09:40 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: Para birimleri
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Re: Para birimleri
Fikir ayrılıkları daha iyi yöntemlerin bulunmasına en büyük yardımcıdır muhakkak. Ancak, cevabımda daha önce de önerilen "para birimi edit etmeye yarayan özel bir bileşen" diye yazdığım kısım da vardı.brs yazdı:Size katılmıyorum, kullanıcı isterse ekler yani satılan ürün küsuratı varsa eklenir,
Örnek Ali'nin maaşı
1.500 TL
yada
1.500 TL 30 Kuruş olamaz mı?
Bu arada neden ikici bir edit olsun ki tekbir edit işi görür
Sizin verdiğiniz örnekte ki gibi bir ayrımı bazı kuralları netleştirmeden yapmak mümkün olmayacaktır. Kuruş mu yoksa TL mi yazıldığını anlamak ne şekilde mümkün olacak? Nokta veya virgül karakterine basılarak ise bu bir kural tanımlamasıdır. Ya da son iki hane sürekli kuruş olarak kullanılır diyebiliriz diye düşünüyorum. Ancak bu tanımların her birisi kuruş ile TL'yi ayırd edebilmek için programcının belirleyeceği bir kural olacaktır.
@freeman35 ile bilrikte özetle bunu vurgulamak istemiştik.
Şu anda geliştirilmeye çalışılan bileşen için alternatif görüş olması açısından; mevcut ücretsiz bileşenler üzerinde değişiklik yapılması mümkün olabilir. Hatta belki bir tanesi tam istenildiği şekilde çalışıyor dahi olabilir. Unutulmamalı ki bu bileşenler zaman içinde yeni sürümler çıkarıp karşılaşılan hataları giderilmiş olacaktır.
Aşağıda birkaç örnek bulunabilir.
http://swag.outpostbbs.net/DELPHI/0006.PAS.html
http://www.delphiforfun.org/Programs/De ... ponent.htm
http://torry.net/pages.php?id=92
Re: Para birimleri
@brs merak ettiğimden soruyorum,
1.500 TL
yada
1.500 TL 30 Kuruş olamaz mı?
Edit e yukarıdakileri nasıl yazılacak ? 1.500 binlik ayaracı sen koyuyorsan bunca muhabbet boşuna yaptık demektir, yok biz kod ile koyduracaksak, ben şöle bir sayı girdim, bunu bana formatlayabilir misin?
355
bu 35 tl 50 kuruş mu? 3lira 55 kuruş mu?
yada bu sayı nasıl formatlanır
355355 --> 355,355 tl mi yoksa 3.553,55 tl mi(üç bin beş yüz elli üç lira, ellibeş kuruş)?
kuruşun boyutunu vermedikçe para formatı yapamazsınız, ya hepsi tl dir ya hepsi kuruştur, yada şu kadar hane kuruştur. şartı koymadan formatlanamaz.
1.500 TL
yada
1.500 TL 30 Kuruş olamaz mı?
Edit e yukarıdakileri nasıl yazılacak ? 1.500 binlik ayaracı sen koyuyorsan bunca muhabbet boşuna yaptık demektir, yok biz kod ile koyduracaksak, ben şöle bir sayı girdim, bunu bana formatlayabilir misin?
355
bu 35 tl 50 kuruş mu? 3lira 55 kuruş mu?
yada bu sayı nasıl formatlanır
355355 --> 355,355 tl mi yoksa 3.553,55 tl mi(üç bin beş yüz elli üç lira, ellibeş kuruş)?
kuruşun boyutunu vermedikçe para formatı yapamazsınız, ya hepsi tl dir ya hepsi kuruştur, yada şu kadar hane kuruştur. şartı koymadan formatlanamaz.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: Para birimleri
Kafam iyice karıştı Edite 1500030 gibi bir sayı girildiğinde bana göre TL karşılığı 1.500,30 olmalı (bin beş yüz lira otuz kuruş)
Bu linkten kredi hesaplattım 100000 TL yazdım çıkan sonuç 113.938,31 TL biz bunu editte otomatik olarak niye yaptıramıyoruz.
http://www.hangikredi.com/kredi/hesapla ... oC0-nw_wcB
113.938,31 yüz on üç bin dokuz yüz otuz sekiz bin otuz bir kuruş yanlış mı yazdı bilemiyorum
örnek bir uygulama yaptım http://www.dosyaupload.com/4Rab tek sorun ondalık sayı önüne virgül giremedim
Bu linkten kredi hesaplattım 100000 TL yazdım çıkan sonuç 113.938,31 TL biz bunu editte otomatik olarak niye yaptıramıyoruz.
http://www.hangikredi.com/kredi/hesapla ... oC0-nw_wcB
113.938,31 yüz on üç bin dokuz yüz otuz sekiz bin otuz bir kuruş yanlış mı yazdı bilemiyorum
örnek bir uygulama yaptım http://www.dosyaupload.com/4Rab tek sorun ondalık sayı önüne virgül giremedim
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Para birimleri
bu örnekte senin istediğin şeye benziyor ama bunda virgül ekliyor ve virgülden sonra otomatik 00 ekliyor kullanıcı rakamlara bastıkça formatlıyor yine kullanıcı ','(virgül) e bastığında virgülden sonraki hanelere konumlanıyor.
tavsiyem önce jedi componentlerinden jvcalcedit veya devexpress cxcalcedit e ve bunların displayformat özeliğine bakman belki fazlası ile işini görecektir şahsen hiç bu kadar takılmamıştım bu formatlama kısmına ekrana jvcalcedit koyup display formatını veriyorum bu zamana kadar bir kullanıcı bana yanlış veya istediğim gibi çalışmıyor demedi aklın yolu bir excel açın sutunu parasal olarak biçimlendirin sonra sayılar yazmayı deneyin.
Mücadele güzelleştirir!
Re: Para birimleri
Edite 1500030 gibi bir sayı girildiğinde bana göre TL karşılığı 1.500,30 olmalı Bu kanıya nasıl vardın? Yazdığın sayı Birmilyonbeşyüzbinotuzdur. Nereye yazarsan yaz, kime sorarsan sor bu böyledir. kuruş'u mutlaka bir yerde ya da bir şekilde belirtmen gerekir.brs yazdı: ↑08 Tem 2017 01:23 Kafam iyice karıştı Edite 1500030 gibi bir sayı girildiğinde bana göre TL karşılığı 1.500,30 olmalı (bin beş yüz lira otuz kuruş)
Bu linkten kredi hesaplattım 100000 TL yazdım çıkan sonuç 113.938,31 TL biz bunu editte otomatik olarak niye yaptıramıyoruz.
http://www.hangikredi.com/kredi/hesapla ... oC0-nw_wcB
113.938,31 yüz on üç bin dokuz yüz otuz sekiz bin otuz bir kuruş yanlış mı yazdı bilemiyorum
örnek bir uygulama yaptım http://www.dosyaupload.com/4Rab tek sorun ondalık sayı önüne virgül giremedim
Bu linkten kredi hesaplattım 100000 TL yazdım çıkan sonuç 113.938,31 TL Bak ne yazmışsın 100000 TL yazmışsın. O da bu sayıyı Yüzibin tl olarak almış sonra bir takım hesaplamalardan sonra kuruşu belirtmiş. Senin yapmak istediğin 100030 bu sayının yüzbin TL otuz kuruş olarak alması. Sence bu doğru olur mu o zaman?
Re: Para birimleri
Her tuşa basmada tekrar formatlayacakdin
Yapılır ama biraz fazla kod yazman gerekebilir.
Önce edit içindeki Nokta virgülü replace yaparak sil girilen tüm rakamları al sağdan 2 hane ondalık kısım olacak kalanlar tam sayı kısmı bunları formatla ve formatlı hâlini edite yaz. Tekrar tuşa basılınca aynı işlemi tekrarlayın
Yapılır ama biraz fazla kod yazman gerekebilir.
Önce edit içindeki Nokta virgülü replace yaparak sil girilen tüm rakamları al sağdan 2 hane ondalık kısım olacak kalanlar tam sayı kısmı bunları formatla ve formatlı hâlini edite yaz. Tekrar tuşa basılınca aynı işlemi tekrarlayın
PostgreSQL - Delphi - Linux
Re: Para birimleri
Kod: Tümünü seç
procedure TForm1.edtParaExit(Sender: TObject);
begin
if Length(TEdit(Sender).Text) < 3 then
TEdit(Sender).Text := '0' + FormatSettings.DecimalSeparator + TEdit(Sender).Text;
end;
Kod: Tümünü seç
procedure TForm1.edtParaKeyPress(Sender: TObject; var Key: Char);
var
vText: string;
vOndalik, vTamSayi: string;
fOndalik, fTamsayi: Double;
vSonuc: string;
selPosition: Integer;
begin
//sadece 0-9 arası rakamları ve backspace tusunu kabul et
if CharInSet(Key, ['0'..'9', #8]) then
begin
selPosition := TEdit(Sender).SelStart;
vText := TEdit(Sender).Text; //edit içeriğini değişkene al
if Length(vText) > 1 then
begin
if CharInSet(Key, ['0'..'9']) then //basılan tuşu sayı ise araya ekle
begin
vText := LeftStr(vText, TEdit(Sender).SelStart) + Key + Copy(vText, TEdit(Sender).SelStart+1, Length(vText));
Key := #0; //keyi ekledikten sonra sil
end
else if Key = #8 then
vText := LeftStr(vText, TEdit(Sender).SelStart-1) + Copy(vText, TEdit(Sender).SelStart+1, Length(vText));
vText := StringReplace(vText, '.', '', [rfReplaceAll]); //varsa noktalar bunları sil
vText := StringReplace(vText, ',', '', [rfReplaceAll]); //varsa virgul sil
//3 karakterden az bilgi girilmişse zaten sadece ondalık kısım girilmiş demektir
if Length(vText) < 3 then
begin
vOndalik := vText;
vTamSayi := '0';
end
else
begin
vOndalik := RightStr(vText, 2); //sağdan iki karakter ondalık kısım
vTamSayi := LeftStr(vText, Length(vText)-2) //sağdan iki karakter haricindeki tümü tam sayı kısmı
end;
fOndalik := StrToFloat('0' + FormatSettings.DecimalSeparator + vOndalik);
fTamsayi := StrToFloat(vTamSayi);
TEdit(Sender).Text := FloatToStrF(fTamsayi + fOndalik, ffNumber, 16, 2);
//seçili pozisyona gel
if (selPosition > 0) and (selPosition < Length(TEdit(Sender).Text)) and (Key = #8) then
TEdit(Sender).SelStart := selPosition-1
else
TEdit(Sender).SelStart := Length(TEdit(Sender).Text);
Key := #0;
end;
end
else
Key := #0;
end;
PostgreSQL - Delphi - Linux