Meine Idee: Ich habe 6 Checkboxen von denen jede für einen bestimmten Typ steht.
Wenn jetzt bei einer bereits abgehackten Checkbox der Haken manuell entfernt wird, soll der zugehörige Typ der jeweiligen Checkbox ermittelt werden, damit ich den weiterverarbeiten kann.
Allerdings gibt es schon bevor ich die Prozedur überhaupt aufrufe, Probleme und eine Fehlermeldung bei Zeile 9.
Zugegeben, die Konstruktion ist etwas abenteuerlich, aber ich sehe nicht, warum die nicht funktionieren sollte...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm6.cb1Click(Sender: TObject); var typ: string; I: Integer; begin if (Sender as TCheckBox).Checked = true then begin (Sender as TCheckBox).Checked:= false; for I := 1 to 6 do if (Sender as TCheckBox).Name = TCheckbox(Form6.FindComponent('CB'+inttostr(i))).name then case i of 0: typ:='..'; 4: typ:='...'; end; |
Dank euch.
Edit: Habs wieder schon selbst. Die for-Schleife geht bis 6, allerdings gibt es nur 5 Objekte, da kommt der Fehler her.
Was ich allerdings nciht verstehe ist, warum, sobald die Prozedur einfach nur da ist, ohne dass sie durch den benötigten Klick auf cb1 aufgerufen wird, der Haken der Checkbox cb1 einfach nicht mehr gesetzt / bzw sofort wieder entfernt wird.
Kann es sein, dass wenn eine andere Prozedur cb1.checked:=true; ausführt, dieser Befehl dann gleichzeitig "procedure cb1click" auslöst? Anders kann ich mir das jetzt nicht erklären...
Moderiert von
Narses: Titel geändert, war: "ZUgriffsverletzung, verstehe den Fehler nicht...
".