【问题标题】:OnClick event for dynamic TImage动态 TImage 的 OnClick 事件
【发布时间】:2018-11-29 21:08:58
【问题描述】:

我正在尝试用 16 对卡片构建一个记忆游戏。

我不知道如何实现OnClick 事件。我是使用 C++Builder 的新手,所以请帮忙。

图像在一个数组中,我像这样动态分配它们:

for(int i=0;i<4;i++)
{
    for(int j = 0; j < 8 ; j++)
    {
        VectorOfImages[i*8+j]=new Card(9+i*112,9+j*112,pan, 0);
        VectorOfImages[i*8+j]->image->Picture>LoadFromFile("...OOP\\c\\images\\0.bmp");
        VectorOfImages[i*8+j]->image->Tag=i*8+j;
        VectorOfImages[i*8+j]->image->Enabled=false;
    }
}

【问题讨论】:

    标签: onclick c++builder c++builder-6 timage


    【解决方案1】:

    OnClickTImage 的属性,您可以像分配任何其他属性一样分配它,例如:

    for(int i = 0; i < 4; ++i)
    {
        for(int j = 0; j < 8; ++j)
        {
            int idx = (i*8) + j;
            VectorOfImages[idx] = new Card(9+i*112, 9+j*112, pan, 0);
            VectorOfImages[idx]->image->Picture->LoadFromFile("...OOP\\c\\images\\0.bmp");
            VectorOfImages[idx]->image->Tag = idx;
            VectorOfImages[idx]->image->Enabled = false;
            VectorOfImages[idx]->OnClick = &ImageClicked; // <-- here
        }
    }
    

    然后,将ImageClicked() 添加到您的表单中:

    private:
        void __fastcall ImageClicked(TObject *Sender);
    
    ...
    
    void __fastcall TMyForm::ImageClicked(TObject *Sender)
    {
        // Sender points at the TImage that was clicked...
        TImage *Image = static_cast<TImage*>(Sender);
        // use Image as needed...
    }
    

    【讨论】:

    • 天哪!非常感谢,我会努力的
    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 2011-10-22
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多