TComponenten identifizieren



  • Hi Leute...

    nun ich versuch einfach ma mein problem zu schildern, hoffentlich kann
    mir einer helfen.

    ich erstelle TPanels wärend der laufzeit.
    sprich:

    LblArray.Length = LblNum;
    for (int i = 0; i < LblArray.Length; i++)
    LblArray[i] = new pan(this);

    habe ich ne eigene klasse die eine integer variable hat. diese variable soll
    sozusagen als id fungieren. meine klasse erbt nun von der TPanel klasse um auf deren eigenschaften zu zugreifen zu können.

    nun möchte ich einen event anlegen, der nun von allen meiner TPanels aufgerufen werden kann. dabei ist es jedoch wichtig, das das event irgendwie merkt, also mitbekommt, von welchem der erstellten TPanels es aufgerufen wurde.

    ich hoffe ihr habt mehr oder weniger verstanden was ich meine...

    mfg jeg





  • bzw.die FAQ Thema "Komponenten benutzen"



  • Bitte lest erst die Frage bevor ihr Antwortet.

    Wenn ich die Lösung in der FAQ gefunden hätte, würde ich die Frage
    nicht stellen. Es geht darum die Komponenten nicht anhand ihres
    Klassennamens zu idenifizieren. Bei TPanels heisst die ja immer
    TPanel. Das hilf mir nicht weiter. Ich will sie anhand einer id
    identifizieren. Damit ich festlegen von welcher Komponente nun das
    Ereignis ausgelöst wurde.

    MFG Jeg



  • Hallo

    Beim Erzeugen eines TPanels weißt du desen Eigenschaft Tag einen entsprechenden eindeutigen Wert zu. Das kann zum Beispiel der Index eines Arrays sein, oder die Adresse eines Objekts.
    Dann must du nur noch im Event auf dein Panel casten, liest die Eigenschaft Tag aus und kannst bestimmen welches Panel das ist und was damit passieren soll.

    bis bald
    akari



  • Hi,

    ..................

    edit
    ahhhh zur Laufzeit erstellte TPanel, und du möchtest wissen wie du die Events abfangen kannst.

    ein Beispeil mit TButton::ONCLICK

    1. in der unit.h eine eigene Click-Methode(Funktion) deklarieren

    private:
       void __fastcall ButtonClick(TObjekt *Sender);
    

    2. in der unit.cpp

    TButton *hallo=new TButton(this); //erster Button
    hallo->OnClick=ButtonClick;            //OnClick überschreiben mit eigener 
    TButton *duda=new TButton(this);       //zweiter Button
    duda->OnClick=ButtonClick;       //OnClick überschreiben mit eigener
    

    Es können nun alle beiden Buttons, die selbe ButtonClick(TObjekt *Sender) benutzen.
    Jetzt kannst du in ButtonClick(TObjekt *Sender)
    folgendes einbauen, wie dort beschrieben.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-159966.html

    Grüsse



  • Lies einfach mal die Seite mit dem Link



  • Hi,

    Nachtrag
    Alle Events der TPanel kannst du so zur Laufzeit überschreiben, wie oben beschrieben. Du musst nur darauf achten, dass die Methoden-Argumente stimmen.
    Also die in der unit.h deklarierte eigene Methode-Argumente müssen mit denen der zu erwartenden orginal Event stimmen. Dazu kannst du im Objektinspektor das entsprechende Ereignis klicken, um zu sehen wie die Argumente aussehen.

    Grüsse


Anmelden zum Antworten