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 Text

    for (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


Anmelden zum Antworten