Komponente zur laufzeit erzeugen



  • ich erzeuge durch

    TCheckBox *cbAgregate[30];
    

    ein Komponenten arry in der .h datei
    in der cpp

    AnzahlAgregate = AgregateListe->Count;
    
       for (int x = 0; x<AnzahlAgregate; x++)
       {
          cbAgregate[x] = new TCheckBox(this);
          cbAgregate[x]->Parent = Form1;
          cbAgregate[x]->Left = 24;
          cbAgregate[x]->Top = 100+x*16;
          cbAgregate[x]->Caption = AgregateListe->Strings[x];
          cbAgregate[x]->Checked = iniMaschinenDaten->ReadBool(comboMaschinen->Items->Strings[cbMaschinen->ItemIndex],
                                                                cbAgregate[x]->Caption,
                                                                false);
       }
    

    und

    void __fastcall TForm1::FormDestroy(TObject *Sender)
    {
       for (int x = 0; x<AnzahlAgregate; x++)
       {
          delete cbAgregate[x];
       }
    }
    
    //----
       TStringList *AgregateListe = new TStringList;
    

    und jetzt zu meiner frage:
    mit TCheckBox *cbAgregate[30]; reserviere ich ja speicher für 30 CheckBoxe.
    kann ich nicht zuerst die TStringList über -> Count Abfragen und dan entsprechend Speicher reservieren?
    zB:

    AnzahlAgregate = AgregateListe->Count;
    TCheckBox *cbAgregate[AnzahlAgregate];
    


  • Hallo

    dazu brauchst du entweder DynamicArray (die einfache VCL-Variante) oder std::vector (die Standart-C++ Variant).
    Beides sollte im Forum und BCB-Hilfe ausreichend erklärt sein.

    /Edit : Da hab ich wohl Standard falsch geschrieben... peinlich

    bis bald
    akari



  • danke für die antwort.. ich werde mich da mal weiter informieren..



  • Siehe FAQ, "Komponenten benutzen - dynamische Arrays".


Anmelden zum Antworten