Alan Toplama !!!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Alan Toplama !!!

Mesaj gönderen ozcank »

Arkadaşlar 5 tane alanım var ve bu alanları Fiyat*Adet=Toplam şeklinde yapmak istiyorum fakat ben kodları bu şekilde yaptım ;

Kod: Tümünü seç

procedure TForm22.DBEdit10Exit(Sender: TObject);
begin
DBEdit33.Value:=DBEdit9.Value*DBEdit10.Value;
DBEdit32.Value:=DBedit32.Value+DBEdit33.Value;
end;

procedure TForm22.DBEdit13Exit(Sender: TObject);
begin
DBEdit34.Value:=DBEdit12.Value*DBEdit13.Value;
DBEdit32.Value:=DBedit32.Value+DBEdit34.Value;
end;

procedure TForm22.DBEdit16Exit(Sender: TObject);
begin
DBEdit35.Value:=DBEdit15.Value*DBEdit16.Value;
DBEdit32.Value:=DBedit32.Value+DBEdit35.Value;
end;

procedure TForm22.DBEdit19Exit(Sender: TObject);
begin
DBEdit36.Value:=DBEdit18.Value*DBEdit19.Value;
DBEdit32.Value:=DBedit32.Value+DBEdit36.Value;
end;

procedure TForm22.DBEdit22Exit(Sender: TObject);
begin
DBEdit37.Value:=DBEdit21.Value*DBEdit22.Value;
DBEdit32.Value:=DBedit32.Value+DBEdit37.Value;
end;
bu işlemi daha kısaltabilirmiyim birde Edit kısmına ne kadar üzerinde dolaşırsam üstüne katlıyor.

Kod: Tümünü seç

procedure TForm22.DBEdit33Exit(Sender: TObject);
Var
RoTop,RoTop1,RoTop2 : Currency;
begin
RoTop1:=StrToFloat(DBEdit32.Text);
RoTop2:=StrToFloat(DBEdit33.Text);
RoTop:=RoTop1+RoTop2;
DBEdit32.Text:=FloattoStr(RoTop);
end;
bu şekildede Toplama aktarıyorum bu işlemi nasıl kısaltabilirim ve her Edite giriş çıkışda katlamayı önleyebilirim?
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Öncelikle bu dbeditlere makul isimler ver.

Kod: Tümünü seç

dbeToplam1.Value:=dbeFiyat1.Value*dbeAdet1.Value;
dbeGenelToplam.Value:=dbeGeneltoplam.Value+dbeToplam1.Value;
gibi.
FindComponent diye bi (komut mu denir) komut var onu araştır. Bütün dbeditlerin on exitininde aynı procedure'ü çalıştırırsan find component ile

Kod: Tümünü seç

FindComponent('dbeToplam'+inttostr(i))
gibi sondaki sayıyı değiştirerek istediğin dbedite erişirsin ve tek bir procedure'de işi halletmiş olursun.
value kullanmaktan mümkün olduğunca kaçın. Acaip yavaş, Marco CANTU'nun bir örneği var neredeyse 10 kat yavaş. Bunun yerine dbedit'in text'ini alıp inttostr() ya da floattostr ile sayıya çevirmen daha hızlı olur.

dbeditten text alıp kullanma. bunun yerine database'indeki alandaki değeri alıp kullan, elde ettiğin sonuçlar grantii olsun.

Kod: Tümünü seç

tabloadi.fieldbyname('alanadi').asinteger
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Cevapla