BCB 2009: Ereignis dynamischen Objekten zuweisen



  • Hallo,

    im Hauptformular:

    img[iCountImage]->OnMouseEnter = Image1MouseEnter;
    

    entsprechend:

    void __fastcall TfrmMain::Image1MouseEnter(TObject *Sender)
    {
    	//Mach was
    }
    

    In der Headerdatei:

    __published:	
    	void __fastcall Image1MouseEnter(TObject *Sender);
    

    Ich bekomme aber immer die Fehlermeldung: E2451 Undefiniertes Symbol 'Image1MouseEnter'

    Auf die gleiche Art hatte ich es immer im BCB 6 gemacht.

    Kann mir da jemand auf die Sprünge helfen ?

    Vielen Dank !



  • Das kann ich nicht reproduzieren.

    Welchen Typs ist img? In welcher Methode befindet sich die Zuweisung?



  • #include <vcl.h>
    #pragma hdrstop
    
    #include "cMain.h"
    #include "cImageOptions.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TfrmMain *frmMain;
    TPanel *panel[100];
    TImage *img[100];
    

    Über einen Button rufe ich diese Funktion auf:

    void Create_Main_Typ(String sTyp, int iPosX, int iPosY)
    {
    	img[iCountImage] = new TImage(frmMain);
    	img[iCountImage]->Name = "imgT" + IntToStr(iCountImage);
    	img[iCountImage]->Parent = frmMain;
    	img[iCountImage]->Width = 41;
    	img[iCountImage]->Height = 41;
    	img[iCountImage]->Top = iPosY;
    	img[iCountImage]->Left = iPosX;
    	img[iCountImage]->Picture->LoadFromFile("Kreis.bmp");
    	img[iCountImage]->Stretch = true;
    	img[iCountImage]->Proportional = true;
    	img[iCountImage]->Transparent = true;
    
    	//img[iCountImage]->OnMouseEnter = Image1MouseEnter;
    	//img[iCountImage]->OnMouseLeave = Image1MouseLeave;
    
    	img[iCountImage]->Show();
    	img[iCountImage]->BringToFront();
    	iCountImage++;
    }
    


  • Die Funktion Create_Main_Typ ist kein Member von frmMain und kennt demzufolge Image1MouseEnter nicht. Du mußt das also so aufrufen.

    img[iCountImage]->OnMouseEnter = frmMain->Image1MouseEnter;
        img[iCountImage]->OnMouseLeave = frmMain->Image1MouseLeave;
    

    oder die Funktion zum Member machen.



  • Trottel @me !

    Vielen Dank 🙂


Anmelden zum Antworten