Autor Beitrag
ricola
Hält's aus hier
Beiträge: 1

Windows 7 64bit
Delphi 7
BeitragVerfasst: Fr 29.03.13 20:54 
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:

ausblenden 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 29.03.13 21:10 
Du weist allen Checkboxen dasselbe Event zu, dann langt gegf. ein Block

ausblenden 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.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 30.03.13 10:28 
- Nachträglich durch die Entwickler-Ecke gelöscht -