Dbeditte Para birimi...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Dbeditte Para birimi...

Mesaj gönderen selman »

Selam.

Daha önce bu konuya forumda değinilmesine karşın ne yaptımsa yapayım yazılan formüller hata verdi.Onun için ben de çareyi yazmak da buldum.
Projemde iki formum var birinci formda 3 dbedit ikinci formda 2 dbedit var
Bu dbeditlerin bağlı bulunduğu table olan dbaseIV table da bu dediğim alanlar number özelliğini taşıyordu sonra bu editlerin data
alanlarını Float olarak değiştirdim.
İlk formumdan bahsedeyim hocam.İlk formumda 3 tane dbedit şu isimleri taşıyor.
Günlük Gün Ödenecek.Ödenecek isimli dbeditin readonly özelliğini true yaptım ki elle değiştirme olmasın rakamda.
Ödenecek Günlük ile Gün alanını çarpacak kendi haznesine yazacak.
Ödenecek dbeditinin OnEnter olayına şu komutları yazdım :
dbedit14.Text:=floattostr(strtofloat(dbedit13.Text)*strtofloat(dbedit12.Text));

Şimdi bu formla bağlantılı diğer formu anlatayım
Bu formda form1e bağlı ödenecek dbediti , Verilen ,Borç isimli üç dbedit var.
Şimdi burada Verilen dbediti Ödenecek dbedittinden çıkarılıp Borca yazdırılacak.Verilen dbeditin OnExit olayına ise :
form2.Table1BORC.Value:= form2.Table1ÖDENE.Value-form2.Table1VERILEN.Value;
yazdım.
Kodlar çalışıyor çarpma çıkarma gibi işlemler yapıyor ama ben bunu virgüllü sayılar için yapmak istiyorum 1.dbedite 50.000 gireyim diğerine 100.000 son dbedit bunu hesaplamıyor üçüne de virgüllü sayı haline gelmeleri için komut uyguladım ama virgüllü sayıları çarpma veya çıkarma yapmıyorlar.Ama hiçbir şey uygulamasam hesaplamalar falan tamam yapıyor iş noktalı sayıya gelince olmuyor hata veriyor.Yani ben para birimi olarak yazdırmak istiyor ve ona göre işlem yaptırmak istiyorum.Acaba çarpma veya çıkartma komutlarını Onexit veya Onenter eventslerine değil de başka yere mi yazdıracağım.Sorunum için önceki konulara baktım formatfloat uyguladım,fieldin display formatına #,## yazdım ama istediğim olmadı
Şimdi Nasıl olacak ?
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Nerde Yanlış yaptığını bilmiyorum ama Table ın fields editorun de Hangi fields sa onun Display formatına "###,###,###,###,###" yaz. Bunun haricinde virgül için yazdığın bütün kodları sil. Display formata sadece bunu yazmak yetecektir.

sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

texti sayıya çeviriken virgüllerden kurtulman gerekiyor. Bunun için daha önce biri bir kod yazmıştı ama şimdi hatırlamıyorum ararsan bulursun.
Diğer bir çözüm de sayıyı dbeditlerden değilde database'den almak. O zaman porblemin kalmaz.

Kolay Gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Re: Dediklerinizi yaptım ama yine Dbeditte Para birimi...

Mesaj gönderen husonet »

selman yazdı: 1.dbedite 50.000 gireyim diğerine 100.000 son dbedit bunu hesaplamıyor üçüne de virgüllü sayı haline gelmeleri için komut uyguladım ama virgüllü sayıları çarpma veya çıkarma yapmıyorlar.
Arkadaşım bu problemle karşılaşman gayet dolay çünkü DBEdit'lerin Text'inde işlem tapmaya çalışıyorsun. Yapılması gereken en güzel olay bunların Dataset kısmıyla işlem yaptırman olacaktır. Yok illaki ben DBEdit'lerin Text'leriyle işlem yapmak istiyorum dersem o zaman String tipte veriyi sayı (Float, Integer vb...) tipine çevirmelisin. Bu arada arama yapsaydın bu sorununu şimdiye kadar halletmiştin. :wink:


Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

Dataset kısmında şair aekadaşımnda , hüseyin abimizinde dediklerini uyguladım olmuyor hdayi arkadaşım bir kod vardı dedi onu yazarsa iyi olur.

Acaba diyorum editlerin text işlemini yazdığım formülü başka bir yere yazsam sorun düzelir mi ?
Yardım ederseniz çok iyi olur. :oops:
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Kodu arama yaparak bulabilirsin.

Kolay Gelsin....
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Benim Yazmış olduğum bir fonksiyon.
MAKALE VE İPUCU kısmında HusoEdit bileşeninin içinde aynısı vardı.

Kod: Tümünü seç

function Value(Str: String): Double; 
var 
     i:integer; 
begin 
     for i:=1 to length(Str) do 
     Begin 
        if Str[i]='.' then 
            delete(Str,i,1); 
     End; 
     result:= StrToFloat(Str); 
end;
P206 Arkadışımızın yazdığı aynı kod'un farklı bir yapıda kod'lanması
viewtopic.php?p=20325#20325



Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
kemal5
Üye
Mesajlar: 16
Kayıt: 23 Tem 2004 03:09
Konum: izmir
İletişim:

Mesaj gönderen kemal5 »

Bu kodu nereye yazdın hüseyin abi işlem yaptıracak textlerin içine mi ?
Eğer öyleyse bana da uyar herhalde.
İzmir doğumluyum.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Bu kodu ilk önce kopyala implement kısmının altına yapıştır. Sonra toplama çıkartma yapacağın zaman fonkisyonun çağır.

Örnek.

Edit3.Text := FloatToStr(Value(Edit1.Text) + Value(Edit2.Text));

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
kemal5
Üye
Mesajlar: 16
Kayıt: 23 Tem 2004 03:09
Konum: izmir
İletişim:

İmplement Kısmı ?

Mesaj gönderen kemal5 »

İmplement kısmı nerde abi ne field editörüne ne de herhangi bir yerde implement kısmı göremedim.
İmplement kısmına sizin dediğiniz kodu yazınca sonra son yazdığınız kodu ;
Edit3.Text := FloatToStr(Value(Edit1.Text) + Value(Edit2.Text));

Edit3.text in OnExit olayına yazacağım herhalde galiba değil mi ?
Ama önce implement olayını açıklarsan biraz anlarım yoksa işime yaramaz .
Ayrıca
function Value(Str: String): Double;
var
i:integer;
begin
for i:=1 to length(Str) do
Begin
if Str='.' then
delete(Str,i,1);
End;
result:= StrToFloat(Str);
end;
kodunu tüm dbeditlerin implement olayına mı yazacağım onu da açıklarsan sevinirim.
Gene sorak bari :P İmplement olayı nedir ?
Şimdiden Teşekkürler.
İzmir doğumluyum.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation //işte bu kısım implement kısmıdır.

{$R *.dfm}
function Value(Str: String): Double;
var
i:integer;
begin
for i:=1 to length(Str) do
Begin
if Str='.' then
delete(Str,i,1);
End;
result:= StrToFloat(Str);
end;


Arakadaşım Edit lerin exit eventine de Edit3.Text := FloatToStr(Value(Edit1.Text) + Value(Edit2.text); yazman yeterli olacaktır.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Cevapla