Ereignisse bei dynamischen Arrays



  • Hallo
    Es ist Ostern und ich habe mal wieder etwas Zeit zum programmieren gefunden.
    Allerdings bin ich schon wieder mit meinem Programmier-Latein am Ende.
    Ich hoffe ihr könnt mir helfen.

    Im Prinzip ähnelt mein Anliegen folgendem Beitrag aus den FAQ's:

    http://www.c-plusplus.net/forum/viewtopic.php?t=39206

    Mein Array is halt nen Vector, aber egal.
    Ich sehe dass doch richtig, dass ich dabei aber ein TImage (Image1) zur Entwurfszeit erstellen muss, oder? Naja ist ja nicht schlimm.

    Jetzt möchte ich allerdings bei einem Klick auf eines dieser zur Laufzeit erstellten Objekte immer ein spezifisches Ereigniss aufrufen. Also z.B. Ausgabe "test1", "test2", "test543", jenachdem auf welches Objekt geklickt wird.

    Kann mir da jemand helfen?
    Danke DerHelli



  • Du kannst über den Sender feststellen, wer das Ereignis ausgelöst hat. Auch dazu gibt es einen FAQ-Beitrag im Komponenten-Abschnitt.



  • Ach so. Also dass "Sender" die Quelle ist klingt ja logisch.
    Aber das ist ja ein TObject. Ich benötige allerdings da irgendwie nen TImage.

    std::vector<TImage*> BilderVector;
    
    void __fastcall Form1::FormCreate(TObject *Sender)
    {
      for(int i=0; i<10; i++)
      {
        TImage *bilder = new TImage(this);
        bilder->Parent = this;
        bilder->Top = i*100;
        bilder->Canvas->Brush->Color = clWhite; // nur zum Test
        bilder->OnClick = Image1Click;
        BilderVector.push_back(bilder);
      }
    }
    
    void __fastcall THTMLer::Image1Click(TObject *Sender)
    {
      bilder->Picture->LoadFromFile(FileListBox1->FileName);
    }
    

    Anstatt "bilder" müsste also der Sender stehen, damit das angewählte Bild aus FileListBox1 auch im richtigen Bild des Vectors erscheint.
    Im Prinzip möchte ich in FileListBox ein Bild anwählen und dieses soll dann in dem TImage erscheinen, welches ich anklicke.



  • Juhu.
    Es funktioniert.
    dynmic_cast war der Schlüssel 😃

    Vielen Dank


Anmelden zum Antworten