Click bzw. OnClick bei dynamisch erzeugten Buttons



  • Code:
    in der Header

    DynamicArray<TButton*> TeilButton;
    

    im Programm

    {
    TeilButton.Length++;
    TeilButton[i] = new TeilButton(Handle);
    TeilButton[i]->Caption = i;
    TeilButton[i]->Left = 0;
    TeilButton[i]->Top = s;
    TeilButton[i]->Height = 20;
    TeilButton[i]->Width = 20;
    TeilButton[i]->Parent = Panel1;
    i++;
    s +=25;
    }
    

    der dynamisch erzeugte Button soll bei dem OnClick()-Ereignis die Möglichkeit bieten den angeklickten Button innerhalb des Panels zu bewegen.
    Also was normalerweise über die Ereignisfunktion normaler Buttons

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      // Code zum Ändern der Buttonposition
    }
    

    gemacht wird, will ich nun mit den dynamisch erzeugten Buttons machen.

    void __fastcall TForm1::TeilButton[i]Click(Tobject *Sender)  // als Bsp.
    {
      // Code zum Ändern der Buttonposition
    }
    

    Leider habe ich bis jetzt keinen Erfolg bei der Realisierung dabei gehabt.
    Ich habe daran gedacht, die Funktion OnClick() zu überladen, aber das läßt der Compiler nicht zu.
    Habt ihr Ideen, wie ich das machen kann, mir fällt nix mehr dazu ein.



  • Ich verstehe dein Problem nicht ganz!

    Wieso nimmst du nicht eine einzige Funktion und lässt diese beim Klick auf alle Buttons aufrufen (also eine, die die Aktion bei allen Buttons zentral regelt)? Anhand des Sender-Parameters könntest du dann auch deine Buttons identifizieren, wieso willst du verschiedene Funktionen verwenden?

    Ich meine dass so:

    DynamicArray<TButton*> TeilButton;
    // ...
    TeilButton.Length++;
    TeilButton[i] = new TeilButton(Handle);
    TeilButton[i]->Caption = i;
    TeilButton[i]->Left = 0;
    TeilButton[i]->Top = s;
    TeilButton[i]->Height = 20;
    TeilButton[i]->Width = 20;
    TeilButton[i]->Parent = Panel1;
    TeilButton[i]->OnClick = Button1Click;
    i++;
    s +=25;
    
    //...
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      // Code zum Ändern der Buttonposition
      // hier gegebenenfalls mit dynamic_cast<TButton*>(Sender) den Button identifizieren.
    }
    


  • Ich denke mal in der FAQ steht da ausführlich was zu.


Anmelden zum Antworten