C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Что делает Object[]?  (Прочитано 1202 раз)
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


« : 09 Октябрь 2013, 09:56:12 »

Здравствуйте. Имеется кусочек кода (признаюсь честно с какого то сайта свиснул ответ на свой вопрос искал)

Код
void __fastcall TfrmCheck::FormCreate(TObject *Sender)
{
TRect Rect;
 
 for(int i = 1; i < StringGrid1->RowCount; i++)
   {
      TCheckBox *Check1 = new TCheckBox(this);
      StringGrid1->Objects[3][i] =  Check1;
      Check1->Visible = false;
      Check1->Width =0;
      Check1->Parent = frmCheck;
      Check1->Color = clLime;
      Check1->Checked = false;
      Check1->Enabled = true;
      Rect = StringGrid1->CellRect(3, i);
      Check1->Left = StringGrid1->Left + Rect.Left;
      Check1->Top = StringGrid1->Top + Rect.Top+2;
      Check1->Width = Rect.Right - Rect.Left;
      Check1->Height = Rect.Bottom - Rect.Top;
      Check1->OnClick = CheckBox2->OnClick;
      Check1->Visible = true;
   }
}
который генерирует CheckBox'ы в ячейках сетки.  Здесь есть такая строчка   StringGrid1->Objects[3] =  Check1;
если ее закомментировать  то ничего не изменится. Как ВЫ думаете для чего она нужна.  
« Последнее редактирование: 09 Октябрь 2013, 11:21:17 от volvo877 » Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


« Ответ #1 : 09 Октябрь 2013, 12:14:54 »

Эта строка (кстати, ты неправильно ее процитировал) нужна для того, чтобы хранить указатели на галочки ("чекбоксы") в самом гриде. А это надо, чтобы была возможность обращаться к какой-то конкретной галочке по адресу ячейки, например
Код
// установить галочку во второй строке грида
static_cast<TCheckBox*>(StringGrid1->Objects[3][2])->Checked = true;
 

Приведенный код я бы тоже переработал. Например, TCheckBox *Check1 лучше объявить до цикла, а в цикле просто присваивать указателю новое значение. Также положение чекбокса можно менять не отдельными Left / Top / Width / Height, а свойством BoundsRect. И еще - Parent'ом для галочки лучше сделать сам грид, а не форму.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.097 секунд. Запросов: 22.