Dynamisch angelegte Checkboxen auswerten
-
Hallo,
ich lege meine Checkboxen dynamisch an.Ich hab jetzt nur ein Problem, wie kann ich im Programmverlauf abfragen ob meine Checkbox checked ist oder nicht?
int icount = 0; while(!FILINGSYSTEM->Query1->Eof) { icount++; for (int i = icount; i <= icount; i++) { Checkbox[i] = new TCheckBox(this); Checkbox[i]->Parent = this; Checkbox[i]->Height = 32; Checkbox[i]->Top = FILINGSYSTEM->btnAction->Top - i * 25 +30 ; if(i%2 == 0) { Checkbox[i]->Left = 10; Checkbox[i]->Top = 120+i*20; } else { Checkbox[i]->Left = 130; Checkbox[i]->Top = 120+i*20; } Checkbox[i]->Caption = VarToStr(FILINGSYSTEM->Query1->FieldValues["MNR"]); } AnsiString strText = VarToStr(FILINGSYSTEM->Query1->FieldValues["MNR"]); //AnsiString strText = VarToStr(FILINGSYSTEM->Query1->FieldByName("MNR")); try { FILINGSYSTEM->Query1->Next(); } catch(EDBEngineError *dbError) { MessageBox(NULL, dbError->Message.c_str(), "Error:", MB_OK); } }
Denn ich will später auswerten welche Checkbox als Aktiviert gilt.
Kann mir jemand helfen?
-
ein Blick in die BCB-Hilfe liefert:
Checkbox[i]->Checked
-
Ja, ich will sie ja nicht auf checked setzen, sondern in einer anderen Funktion abfragen ob sie checked sind und da bekomme ich eine Fehlermeldung bzgl einer Zugriffsverletzung.
Ich frage dann folgendermaßen ob checked
for (int i = FILINGSYSTEM->counter; i <= FILINGSYSTEM->counter; i--) { if(FILINGSYSTEM->Checkbox[i]->Checked) { MessageBox(NULL, "checked", "BOX:", MB_OK); AnsiString Checkbox; Checkbox = FILINGSYSTEM->Checkbox[i]->Caption; MessageBox(NULL, Checkbox.c_str(), "BOX:", MB_OK); } else { MessageBox(NULL, "unchecked", "BOX:", MB_OK); } }
-
wo erstellst du die Checkboxen?
Checkbox[i] = new TCheckBox([b]this[/b]);
ist this == FILINGSYSTEM?
[b]FILINGSYSTEM[/b]->Checkbox[i]->Checked
-
Oben in der anderen Funktion und initialisiere das in meiner KLasse FILINGSYSTEM mit TCheckBox *Checkbox[10];
Er gibt mir auch die Inhalte aus, allerdings als letztes immer eine Fehlermeldung.
-
Wie initialisierts du das? Weist du die oben erzeugten Checkboxen auch zu?
Warum erzeugst du die Checkboxen nicht gleich im Konstruktor deiner Klasse?
-
dann solltest du deine for-Schleife mal überdenken
for (int i = FILINGSYSTEM->counter; i <= FILINGSYSTEM->counter; i--)
-
hab es gefunden lag an der for schleife
for (int i = FILINGSYSTEM->counter; (i <= FILINGSYSTEM->counter)&& (i>0); i--)
-
Du scheinst irgendwie das Prinzip der for-Schleife nicht richtig verstanden zu haben.
Bsp. aus dem obigen Textfor (int i = icount; i <= icount; i++)
Diese Schleife läuft immer nur ein mal und ist somit sinnlos.
Das hier ist auch sehr merkwürdig.for (int i = FILINGSYSTEM->counter; (i <= FILINGSYSTEM->counter)&& (i>0); i--)
Was spricht hier gegen
for (int i = 1; i <= FILINGSYSTEM->counter; ++i)
Noch besser wäre es aber deine Schleifen und deine Arrays bei 0 beginnen zu lassen (wie alles sonst in C++).
siehe auch
http://tutorial.schornboeck.net/schleifen.htm
http://tutorial.schornboeck.net/arrays.htm