wiedermal eine Frage nach einer eleganteren Lösung für meinen Holzhammer-Code: in meinem Programm gibt es einen Bereich, in dem etliche Parameter angezeigt und geändert werden können (organisiert in mehreren Tabs). Nun möchte ich nicht für jedes TEdit eine neue OnExit-Funktion schreiben, sonder in einer Funktion nach dem betreffenden TEdit-Feld unterscheiden. Das funktioniert im Moment mittels if ... else if ... else if ...-Kette (siehe Beispiel). Das scheint mir aber eher unelegant.
Code: Alles auswählen
procedure TForm1.EditParameterOnExit(Sender : TObject);
begin
with RoadLoadData do
{ Tab: Information }
if Sender = EditInfoName then
Name := EditInfoName.Text // ToDo: max. Stringlaenge abfangen!!
{ Tab: Geometry }
else if Sender = EditBikeWeight then
//Gewicht := StrToFloat(Sender.Text) // das tut nicht
Gewicht := StrToFloat(EditBikeWeight.Text)
else if Sender = EditCoGx then
sx := StrToFloat(EditCoGx.Text)
else if Sender = EditCoGy then
sy := StrToFloat(EditCoGy.Text)
else if Sender = EditFrontArea then
[...]
Mittels case geht es natürlich nicht. Die TEdit-Felder enthalten double, integer oder Text-Felder. Dannach könnte man vielleicht "vorsortieren". Hat noch jemand andere Ideen?
Danke,
Photor
PS: gibt es eigentlich Quellen für solche eleganten Programmier"tricks"/lösungen (also keinen Style Guide)? Würde gerne mehr darüber lernen.