'What to pass as a Sender in a button OnClick method?

I have a function that creates a button dynamically

void createBtn(News obj,TForm *Form1){
    TButton *spam = new TButton(Form1);
    spam->Parent = newsCard;
    spam->Position->X = 280;
    spam->Position->Y = 256;
    spam->Text = "Spam";
}

I need to assign an OnClick event to it, so I added the following line to the function above:

spam->OnClick = spamClick;

The code for spamClick is:

void __fastcall TForm1::spamClick(TObject *Sender, News obj)
 {
    allUsers[userIndex].spamNews(obj);
    ShowMessage("Done!");
 }

The problem is, I need to pass the obj in the line, but the function requires 2 arguments, which are the Sender and the obj.

spam->OnClick = spamClick(obj); // error here

But I do not know what to pass. I've tried Form1, spam, and newsCard. But nothing works.

What do I pass as a Sender? Or, is there a way to assign an OnClick event to the button inside createBtn()?

Edit: class News has the following definition

class News
{
public:
    News(string, string, string, Dates);
    string title;
    string description;
    Dates date;
    int rate;
    string category;
    vector<Comment> comments;
    int spamCount;
    static int newsCount;
    int newsID;
    int numOfRatedUsers;
};

and spamNews is a function in the user class that pushes the obj.newsID into a vector in the user then increases the spamCount.

void user::spamNews(News& obj) {
//check that the news in not already spammed 
    if(!findNews(spammedNews,obj)){  
        spammedNews.push_back(obj.newsID);
        obj.spamCount++;
    }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source