Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Mit CheckBox Wert in ein Edit-Feld schreiben.


ricola - Fr 29.03.13 20:54
Titel: Mit CheckBox Wert in ein Edit-Feld schreiben.
Halli Hallo,

ich versuche grade mit einer CheckBox ein Edit-Feld mit einem bestimmten Wert zu füllen.

Dazu benutze ich das OnClick Ereigniss mit folgendem Code:


Quelltext
1:
if CheckBox1.Checked = true then Edit1.Text := '10' else Edit1.Text := '0';                    


Das klappt auch wunderbar. Nur hat mein Formuar ca. 200 CheckBoxen und genausoviele Edit-Felder. Gibt es einen einfacheren Weg, als die Zeile 200 mal abzuschreiben und nur die Zahlen zu ändern?
C&P ist vielleicht ein Ansatz, halte den allerdings für Fehleranfällig und die Suche nach dem Fehler wird wie die Ostereiersuche, die mein Vater veranstaltet. Unmögliche Ort, die er selber vergisst :)


Als nächstes sollen die Zahlen in den Edit-Feldern addiert werden. Mein gedanklicher Ansatz ist folgende Variablen:
ergeb, EZ_001 ... EZ_200 als integer zu definieren. (EZ steht für EditZahl)
Danach wollte ich dann folgenden Code in jedes OnChange Ereignis der Edit-Felder 1 - 200 kopieren


Quelltext
1:
2:
3:
EZ001 := StrToInt(Edit1.Text); ...  EZ200:= StrToInt(Edit200.Text);
ergeb := EZ001 + ... + EZ200;
Ergebnis1.text := IntToStr(ergeb)


Abgesehen davon, dass ich mir denke, dass ich mir auch hier viel schreibarbeit ersparen kann (ich weiß nur nicht wie), glaube ich, dass das Programm unnötig aufgebläht wird, wenn man den selben Programmcode 200 mal einfügt.

Meine Lösung wird zwar zum Ziel führen, aber gibt es da auch noch eine elegantere Möglichkeit?

Viele Grüße und frohe Ostern
vom Hustenbonbon


bummi - Fr 29.03.13 21:10

Du weist allen Checkboxen dasselbe Event zu, dann langt gegf. ein Block


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm4.AlleClick(Sender: TObject);
var
 ED:TEdit;
begin
 ED := TEdit(FindComponent(StringReplace(TCheckBox(Sender).Name,'CheckBox','Edit',[rfIgnoreCase])));
 if assigned(ED) then
   begin
    if TCheckBox(Sender).Checked  then ED.Text := IntToStr(TCheckBox(Sender).Tag)
    else ED.Text := '0';
   end;
end;


es wird davon ausgegangen dass die Namensgebung passt und der Tag der Checkboxen den Wert beinhaltet.


Delete - Sa 30.03.13 10:28

- Nachträglich durch die Entwickler-Ecke gelöscht -