Mehrere CheckBoxen auf checked = true prüfen - Wie?
-
Hallo Zusammen,
ich habe auf meinem Formular mehrere CheckBoxen. Die Namen sind folgendermaßen aufgebaut:cb1...
cb2...
cbs1...
cbs2...
avf1...
avf2...Ich möchte nun überprüfen, ob z.B. irgendeine CheckBox die im Namen mit cb anfängt checked auf true steht. Wie kann ich sowas machen?
Danke im voraus.
-
Hallo
Siehe FAQ hier im Forum, Abschnitt Komponenten benutzen, Thema Arrays von Komponenten.
bis bald
akari
-
Hallo akari,
meinst du mit den Arrays das
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39211.html
Damit kann ich leider nicht wirklich was anfangen.Ein weiterer Eintrag in der FAQ wäre folgendes:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39207.html
Das sieht schon besser aus und würde mir weiterhelfen. Allerdings weiß ich nicht wie ich folgendes so ändereif (dynamic_cast<TLabel*>(Form1->Components[i])->Name == "Label1")
das ich nur die CheckBoxen anspreche die im Namen am anfang ein z.B. ein "cb" stehen haben. Würde das mit
if (dynamic_cast<TLabel*>(Form1->Components[i])->Name == "cb*")
funktionieren?
-
Hallo
Wenn du nichts damit anfangen kannst dann hast du dich nicht lange genug beschäftigt. Entsprechende Grundkenntnisse in Objektorientierter Programmierung, Speicherverwaltung und den Eigenheiten der VCL sind dafür allerdings schon notwendig (niemand hat behauptet es wäre einfach). Also schau dir nocheinmal den ersten FAQ-Link an.
Der zweite von dir gepostete FAQ-Eintrag ist nicht ganz passend, es bräuchte schon einige Änderungen um damit deine Aufgabe zu erledigen.
bis bald
akari
-
if(cb1->Checked)
ShowMessage("Sie haben CheckBox1 gewählt");
-
@Chakuza
So könnte ich es natürlich auch machen. Allerdings habe ich ca. 15 CheckBoxen und ich dachte, es gibt da einen einfachereren Weg.@akari
Den zweiten Link habe ich jetzt z.B. folgendermaßen umgebaut:AnsiString cbbestellt = ""; for(int i=0; i < bestellung_suchen->ComponentCount; i++) { // oder eine spezielle Behandlung if (bestellung_suchen->Components[i]->ClassNameIs("TCheckBox")) { if (dynamic_cast<TCheckBox*>(bestellung_suchen->Components[i])->Name == "cb1" && dynamic_cast<TCheckBox*>(bestellung_suchen->Components[i])->Checked == true) cbbestellt = "ok"; if(cbbestellt == "ok") { bestellung_suchen->Label12->Caption = "richtig"; } else { bestellung_suchen->Label12->Caption = "falsch"; } } }
Da müsste ich jetzt aber wissen, wie ich bei "cb1" sagen kann, dass er alle CheckBoxen überprüfen soll die im Namen mit "CB" anfangen.
Werde mir den anderen Link aber nochmal anschauen. Ob ich das damit auch hinbekomme. Sehe ich das nicht richtig, dass beim ersten Link Komponenten während der Laufzeit erzeugt werden?
-
einfach Substring von Namen nehmen und die ersten zwei Buchstaben auf "cb" überprüfen?
if (dynamic_cast<TCheckBox*>(bestellung_suchen->Components[i])->Name.SubString(0,2) == "cb" && dynamic_cast<TCheckBox*>(bestellung_suchen->Components[i])->Checked == true)
(ungetestet, kA ob es SubString bei Name gibt)
greetz KN4CK3R
-
@ KN4CK3R
Danke schön. Da hätte ich auch selber drauf kommen können. Damit funktioniert es.