OnClick Event einer zur Laufzeit erstellten Komponenten zuweisen?



  • Hallo Zusammen,
    ich habe eine kleine Frage oder Problem. Ich habe ein Programm, wo während der Laufzeit mehrere CheckBoxen und Edit Komponenten erstellt werden. Wie ich das mache, weiß ich.

    Mein Problem ist jetzt, wie weise ich diesen Komponenten z.B. ein OnClick Event zu?

    Für Hilfe, danke im voraus.



  • Hallo

    Siehe FAQ hier im BCB-Forum, Abschnitt Komponenten benutzen, Thread "zur Laufzeit erstellen, anzeigen und Events zuweisen" 🙄

    bis bald
    akari



  • Ein Blick in die FAQ wirkt da Wunder.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39206.html
    [edit]Ein wenig zu spät.[edit]



  • Hallo,

    Hier mal ein Beispiel für einer Timer und das OnTimer-Ereignis:

    ProgTmr->OnTimer= TFormMain::TmrEvent;
    

    // Der Timer heisst "ProgTmr" und die OnTimer-Methode heisst "TmrEvent"

    Edit: noch ein wenig später 😃

    MfG



  • Wow. Das ging jetzt schnell. Danke für eure Hilfe. Werde mir das mal alles anschauen.



  • Jetzt habe ich doch nochmal eine Frage. Ich möchte die Anzahl der CheckBox-Komponenten variabel gestalten.
    Mit einem double Array mache ich es folgendermaßen

    double *hs_preis = 0;
    hs_preis = new double[DataModule1->sql_select->RecordCount];
    

    Jetzt habe ich das beim der Komponente mit folgendem probiert:

    TCheckBox *checkbox;
    checkbox = new TCheckBox[DataModule1->sql_artikel->RecordCount];
    

    Leider bekomme ich da unter anderem folgende Fehlermeldung:

    Standardkonstruktor zum Initialisieren des Arrayelements vom Typ 'klasse' nicht gefunden

    Was mache ich da falsch? Kann mir da jemand helfen?



  • Hallo,

    so einfach isset dann doch nich...
    Nimm eine Schleife und erzeuge die Checkbox "einzeln"

    for (int i = 0; i < DataModule1->sql_artikel->RecordCount; i++)
    {
       TCheckBox *CheckBox = new TCheckBox(this);
       CheckBox-> ... // Hier die Eigenschaften
    }
    

    Aus deinem anderen Post ist hervorgegangen, dass du die Checkbox'en auf ein Panel packst. Du kannst die dynamisch erzeugten dann mit Panel->DestroyComponents wieder entfernen!

    LG, Micha



  • @EPMS
    Auch das Erstellen von Arrays von Komponenten ist in der FAQ beschrieben. Da steht sogar was in dem bereits verlinkten Thread.



  • Hallo Braunstein,
    über eine Schleife wollte ich das ja auch lösen. In dem verlinkten Beitrag steht folgendes

    const int x = 10;
    TImage *img[x];
    

    Ich war jetzt der Meinung, dass ich das jetzt auch wieder brauch und x halt variabel deklarieren muss.



  • Bitte schau die FAQ einfach etwas gründlich durch und belies dich außerdem zu dynamischen Arrays. Es gibt unter der gleichen Rubrik wie der bereits verlinkte FAQ-Thread einen weiteren Thread zu genau diesem Thema.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39211.html
    Die vector-Variante ist meiner Meinung nach die bessere.


Anmelden zum Antworten