![]() |
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:
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.
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; mfg [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit] |
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) |
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.
|
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 |
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
![]() |
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; |
Re: Addieren von Edits. Gehts auch kürzer?
was ist an dem:
Delphi-Quellcode:
anders als an meinem?
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; |
Re: Addieren von Edits. Gehts auch kürzer?
Eher so:
Delphi-Quellcode:
Und dieses eine Event dann eben allen Edits zuweisen.
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; 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. |
Re: Addieren von Edits. Gehts auch kürzer?
Hallo,
hatten wir den Lösungsansatz dazu nicht schon ![]() Statt
Delphi-Quellcode:
nehmen wir jetzt nur einfach
text := ini.ReadString('Abschnitt',name,text);
Delphi-Quellcode:
zahl := zahl + StrToFloatDef(text,0);
|
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?
|
Re: Addieren von Edits. Gehts auch kürzer?
Welcher Bezeichner ist undefiniert?
|
Re: Addieren von Edits. Gehts auch kürzer?
EditExit in der procedure
|
Re: Addieren von Edits. Gehts auch kürzer?
Die ... stehen antürlich für weitere Zahlx-Variablen und dem entspechenden Code zur Konvertierung
|
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.
|
Re: Addieren von Edits. Gehts auch kürzer?
Nein hab ich nicht...
|
Re: Addieren von Edits. Gehts auch kürzer?
Warum eigntl so kompliziert??
Delphi-Quellcode:
So sollte das doch gehen, oder hab ich etwas übersehen?
procedure TKostenaufstellung.Edit1Exit(Sender: TObject);
begin Edit5.Text:= FloatToStrF(StrToFloatDef(Edit5.Text, 0) + StrToFloatDef(TEdit(Sender).Text, 0), ffFixed, 8, 2); end; |
Re: Addieren von Edits. Gehts auch kürzer?
Dann Editiere mal ein Edit mehrmals.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz