Delphi-PRAXiS

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?

mkinzler 18. Mär 2009 15:45

Re: Addieren von Edits. Gehts auch kürzer?
 
Welcher Bezeichner ist undefiniert?

Ouou 18. Mär 2009 15:46

Re: Addieren von Edits. Gehts auch kürzer?
 
EditExit in der procedure

mkinzler 18. Mär 2009 15:47

Re: Addieren von Edits. Gehts auch kürzer?
 
Die ... stehen antürlich für weitere Zahlx-Variablen und dem entspechenden Code zur Konvertierung

BAMatze 18. Mär 2009 15:49

Re: Addieren von Edits. Gehts auch kürzer?
 
Hast du denn eine Klasse TKostenaufstellung mit einer deklarierten procedure EditExit? wenn nicht dann liegt es daran, wobei du die Namensvergabe an dein Quellcode nur anpassen müsstest.

Ouou 18. Mär 2009 15:53

Re: Addieren von Edits. Gehts auch kürzer?
 
Nein hab ich nicht...

Butch87 18. Mär 2009 16:26

Re: Addieren von Edits. Gehts auch kürzer?
 
Warum eigntl so kompliziert??

Delphi-Quellcode:
procedure TKostenaufstellung.Edit1Exit(Sender: TObject);
begin
  Edit5.Text:= FloatToStrF(StrToFloatDef(Edit5.Text, 0) + StrToFloatDef(TEdit(Sender).Text, 0),  ffFixed, 8, 2);
end;
So sollte das doch gehen, oder hab ich etwas übersehen?

mkinzler 18. Mär 2009 16:29

Re: Addieren von Edits. Gehts auch kürzer?
 
Dann Editiere mal ein Edit mehrmals.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr.

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