Почему мой код не показывает массив моего TButton? - PullRequest
1 голос
/ 05 июля 2019

Я делаю простую игру в виде палача для сообщества разработчиков C ++, и моя игра состоит из кнопок, которые представляют буквы, и если буква не появляется внутри слова, вы теряете жизнь, и так далее, и так далее... Но я бы подумал, что это немного повторяет мой код, если я сделаю TButton для каждой буквы в abcedary.Поэтому я решил создать массив TButton, и мое удивление было, когда я кодирую все, и любой из них появляется в моей форме: c.Если кто-то может мне немного помочь, я буду так счастлив, ха-ха.

Класс игры ...

class Tgame : public TForm
{
__published:    // IDE-managed Components
    TText *word;
private:    // User declarations
    TButton* chars[23];
public:     // User declarations
    __fastcall Tgame(TComponent* Owner);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
};

И реализация конструктора ...

for(int i = 0; i < 23; ++i) {
        this->chars[i] = new TButton(this);
        this->chars[i]->Height = 33;
        this->chars[i]->Width = 49;
        this->chars[i]->Position->X = startX;
        this->chars[i]->Position->Y = startY;
        startX += difX;
        startY += difY;
        this->chars[i]->Opacity = 1;
        this->chars[i]->Visible = true;
        this->chars[i]->Text = "A";
    }

1 Ответ

6 голосов
/ 05 июля 2019

Вы создаете параметр TButton для его владельца (компонент, ответственный за его удаление).

this->chars[i] = new TButton(this);

Но вы не установите его Parent, который является компонентом, в котором TButton будет отображаться визуально. Итак, добавьте эту строку:

this->chars[i]->Parent = this;

Примечание. Значения по умолчанию для Opacity и Visible: 1 и true, поэтому вам не нужно устанавливать их явно.

...