Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Addieren von Edits. Gehts auch kürzer? (https://www.delphipraxis.net/131084-addieren-von-edits-gehts-auch-kuerzer.html)

Ouou 18. Mär 2009 15:14


Addieren von Edits. Gehts auch kürzer?
 
Hallo,

ich hätte da mal eine frage und zwar rechne ich in 12 editfeldern und die summe wird dann in einem anderen editfeld angezeigt.

Hier mal der Quellcode wie ich es gemacht habe...

Delphi-Quellcode:
procedure TKostenaufstellung.Edit1Exit(Sender: TObject);

var
  Zahl1: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Ergebnis := Zahl1;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;


procedure TKostenaufstellung.Edit2Exit(Sender: TObject);

var
  Zahl1, Zahl2: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef (Edit1.Text,0);
Zahl2 := StrToFloatDef (Edit2.Text,0);
Ergebnis := Zahl1 + Zahl2;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit3Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Zahl2 := StrToFloatDef(Edit2.Text,0);
Zahl3 := StrToFloatDef(Edit3.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit4Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, Zahl4: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Zahl2 := StrToFloatDef(Edit2.Text,0);
Zahl3 := StrToFloatDef(Edit3.Text,0);
Zahl4 := StrToFloatDef(Edit4.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3 + Zahl4;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit5Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, Zahl4, Zahl5: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Zahl2 := StrToFloatDef(Edit2.Text,0);
Zahl3 := StrToFloatDef(Edit3.Text,0);
Zahl4 := StrToFloatDef(Edit4.Text,0);
Zahl5 := StrToFloatDef(Edit5.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit6Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, Zahl4, Zahl5, Zahl6: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Zahl2 := StrToFloatDef(Edit2.Text,0);
Zahl3 := StrToFloatDef(Edit3.Text,0);
Zahl4 := StrToFloatDef(Edit4.Text,0);
Zahl5 := StrToFloatDef(Edit5.Text,0);
Zahl6 := StrToFloatDef(Edit6.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5 + Zahl6;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit7Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, Zahl4, Zahl5, Zahl6, Zahl7: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef (Edit1.Text,0);
Zahl2 := StrToFloatDef (Edit2.Text,0);
Zahl3 := StrToFloatDef (Edit3.Text,0);
Zahl4 := StrToFloatDef (Edit4.Text,0);
Zahl5 := StrToFloatDef (Edit5.Text,0);
Zahl6 := StrToFloatDef (Edit6.Text,0);
Zahl7 := StrToFloatDef (Edit7.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5 + Zahl6 + Zahl7;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit8Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, Zahl4, Zahl5, Zahl6, Zahl7, Zahl8: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Zahl2 := StrToFloatDef(Edit2.Text,0);
Zahl3 := StrToFloatDef(Edit3.Text,0);
Zahl4 := StrToFloatDef(Edit4.Text,0);
Zahl5 := StrToFloatDef(Edit5.Text,0);
Zahl6 := StrToFloatDef(Edit6.Text,0);
Zahl7 := StrToFloatDef(Edit7.Text,0);
Zahl8 := StrToFloatDef(Edit8.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5 + Zahl6 + Zahl7 + Zahl8;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit9Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, Zahl4, Zahl5, Zahl6, Zahl7, Zahl8, Zahl9: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Zahl2 := StrToFloatDef(Edit2.Text,0);
Zahl3 := StrToFloatDef(Edit3.Text,0);
Zahl4 := StrToFloatDef(Edit4.Text,0);
Zahl5 := StrToFloatDef(Edit5.Text,0);
Zahl6 := StrToFloatDef(Edit6.Text,0);
Zahl7 := StrToFloatDef(Edit7.Text,0);
Zahl8 := StrToFloatDef(Edit8.Text,0);
Zahl9 := StrToFloatDef(Edit9.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5 + Zahl6 + Zahl7 + Zahl8 + Zahl9;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit10Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, Zahl4, Zahl5, Zahl6, Zahl7, Zahl8, Zahl9, Zahl10: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Zahl2 := StrToFloatDef(Edit2.Text,0);
Zahl3 := StrToFloatDef(Edit3.Text,0);
Zahl4 := StrToFloatDef(Edit4.Text,0);
Zahl5 := StrToFloatDef(Edit5.Text,0);
Zahl6 := StrToFloatDef(Edit6.Text,0);
Zahl7 := StrToFloatDef(Edit7.Text,0);
Zahl8 := StrToFloatDef(Edit8.Text,0);
Zahl9 := StrToFloatDef(Edit9.Text,0);
Zahl10 := StrToFloatDef(Edit10.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5 + Zahl6 + Zahl7 + Zahl8 + Zahl9 + Zahl10;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit11Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, Zahl4, Zahl5, Zahl6, Zahl7, Zahl8, Zahl9, Zahl10, Zahl11: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Zahl2 := StrToFloatDef(Edit2.Text,0);
Zahl3 := StrToFloatDef(Edit3.Text,0);
Zahl4 := StrToFloatDef(Edit4.Text,0);
Zahl5 := StrToFloatDef (Edit5.Text,0);
Zahl6 := StrToFloatDef(Edit6.Text,0);
Zahl7 := StrToFloatDef(Edit7.Text,0);
Zahl8 := StrToFloatDef(Edit8.Text,0);
Zahl9 := StrToFloatDef(Edit9.Text,0);
Zahl10 := StrToFloatDef(Edit10.Text,0);
Zahl11 := StrToFloatDef(Edit11.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5 + Zahl6 + Zahl7 + Zahl8 + Zahl9 + Zahl10+ Zahl11;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

procedure TKostenaufstellung.Edit12Exit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, Zahl4, Zahl5, Zahl6, Zahl7, Zahl8, Zahl9, Zahl10, Zahl11, Zahl12: Real;
  Ergebnis: Real;
begin
Zahl1 := StrToFloatDef(Edit1.Text,0);
Zahl2 := StrToFloatDef(Edit2.Text,0);
Zahl3 := StrToFloatDef(Edit3.Text,0);
Zahl4 := StrToFloatDef(Edit4.Text,0);
Zahl5 := StrToFloatDef(Edit5.Text,0);
Zahl6 := StrToFloatDef(Edit6.Text,0);
Zahl7 := StrToFloatDef(Edit7.Text,0);
Zahl8 := StrToFloatDef(Edit8.Text,0);
Zahl9 := StrToFloatDef(Edit9.Text,0);
Zahl10 := StrToFloatDef(Edit10.Text,0);
Zahl11 := StrToFloatDef(Edit11.Text,0);
Zahl12 := StrToFloatDef(Edit12.Text,0);
Ergebnis := Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5 + Zahl6 + Zahl7 + Zahl8 + Zahl9 + Zahl10+ Zahl11 + Zahl12;
DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;
Nun hätt ich da die Frage ob des ganze man nicht einfach kürzer programmieren kann, weil ich einige felder mehr habe wo ich das berechnen muss und soviel schreibarbeit möchte ich ungern aufbringen.

mfg

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

jfheins 18. Mär 2009 15:16

Re: Addieren von Edits. Gehts auch kürzer?
 
Natürlich geht das deutlich kürzer ;)

Du kannst ein Event auch mehreren Edits zuweisen.

Dazu einfach einmal das Event programmieren, und danach alle anderen Edits markieren, bei denen das gleiche pasieren soll und das Event aus der Combobox auswählen (Also statt Doppelklick in den leeren Bereich einen einfachen Klick und dann nauf den Pfeil runter)

BAMatze 18. Mär 2009 15:18

Re: Addieren von Edits. Gehts auch kürzer?
 
Du solltest bedenken, dass jemand auch zuerst das Edit 4 befüllt und somit Edit 1-3 noch leer ist. Also könntest du eine allgemeine Funktion schreiben, bei verlassen irgeneines Edit Feldes werden alle Felder addiert.

Ouou 18. Mär 2009 15:22

Re: Addieren von Edits. Gehts auch kürzer?
 
ok des hört sich ja schon mal gut an das es viel kürzer auch get :-D. könnt ihr mir da eventuell nen anstoß geben, wie man so ein event schreibt? habe so etwas noch nie gemacht. oder gibts nen tuturial dafür?

mfg

Phoenix 18. Mär 2009 15:24

Re: Addieren von Edits. Gehts auch kürzer?
 
Um ein Control anhand des Namens z.B. ('Edit' + IntToStr(Nummer)) zu finden kannst Du Dir ja mal Delphi-Referenz durchsuchenFindControl (auch hier in der DP mehrfachst gezeigt) angucken. Das dürfte ein passendes Stichwort sein.

mkinzler 18. Mär 2009 15:25

Re: Addieren von Edits. Gehts auch kürzer?
 
Delphi-Quellcode:
procedure TKostenaufstellung.EditExit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, ...: Real;
  Ergebnis: Real;
begin
  Zahl1 := StrToFloatDef(Edit1.Text,0);
  Zahl2 := StrToFloatDef(Edit2.Text,0);
  Zahl3 := StrToFloatDef(Edit3.Text,0);
...
  Ergebnis := Zahl1+Zahl2+Zahl3+...;
  DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;

Ouou 18. Mär 2009 15:30

Re: Addieren von Edits. Gehts auch kürzer?
 
was ist an dem:

Delphi-Quellcode:
procedure TKostenaufstellung.EditExit(Sender: TObject);

var
  Zahl1, Zahl2, Zahl3, ...: Real;
  Ergebnis: Real;
begin
  Zahl1 := StrToFloatDef(Edit1.Text,0);
  Zahl2 := StrToFloatDef(Edit2.Text,0);
  Zahl3 := StrToFloatDef(Edit3.Text,0);
...
  Ergebnis := Zahl1+Zahl2+Zahl3+...;
  DbEdit13.Text := FloatToStrF (Ergebnis, ffFixed,8,2);
end;
anders als an meinem?

Phoenix 18. Mär 2009 15:32

Re: Addieren von Edits. Gehts auch kürzer?
 
Eher so:

Delphi-Quellcode:
procedure TKostenaufstellung.EditExit(Sender: TObject);
var
  ergebnis: Real;
  i: integer;
begin
  ergebnis := 0;

  for i := 1 to 13 do
  begin
    ergebnis := ergebnis + StrToFloatDef(TEdit(FindControl('Edit' + IntToStr(i))).Text, 0);
  end;

  DbEdit13.Text := FloatToStrF(ergebnis, ffFixed, 8, 2);
end;
Und dieses eine Event dann eben allen Edits zuweisen.

Edit nachtrag:
Er meint, dass Du nur ein Event benutzt anstelle von 13 einzelnen Methoden.
Und klicke bitte noch ganz schnell bei Deinem letzten beitrag rechts oben auf 'EDIT' und lege noch [ Delphi ]...[/ Delphi ] Tags um den Code in Deinem Beitrag, damit wir Mods das nicht immer machen müssen.

nahpets 18. Mär 2009 15:34

Re: Addieren von Edits. Gehts auch kürzer?
 
Hallo,

hatten wir den Lösungsansatz dazu nicht schon hier?
Statt
Delphi-Quellcode:
text := ini.ReadString('Abschnitt',name,text);
nehmen wir jetzt nur einfach
Delphi-Quellcode:
zahl := zahl + StrToFloatDef(text,0);

Ouou 18. Mär 2009 15:44

Re: Addieren von Edits. Gehts auch kürzer?
 
ok des ist natürlich einleuchtend des so zu schreiben. ne kleine frage noch, wie mach ich des das in der procedure EditExit kein undefinierter bezeichner ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz