Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > StringGrid & ComboBox


Автор: 101626 4.9.2008, 20:06
Здаствуйте форумчане, большая просьба помочь

в ячейку компонента StringGrid мне надо вставить компонент ComboBox, делаю это я так:

в заголовочном файле определяю TComboBox *с; 
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,int ARow, bool &CanSelect) //Событие комп. StringGrid1     
{
if © delete c;   //освобождаем
c = new TComboBoxEx (StringGrid1);
c->Parent = StringGrid1;
c->Items->Add("1"); //Добавляем строки в ComboBox
c->Items->Add("2");
c->Items->Add("3");
c->Items->Add("4");
TRect rect = StringGrid1->CellRect(ACol, ARow); 
c->BoundsRect = rect;//Положение
c->BringToFront();
}

все то хорошо, но только открывающийся список компонента ComboBox открывается внутри ячейки стринггрида, и по этому его не видно.
Как можно сделать чтоб он был поверх к-та StringGrid? Заранее блогодарен. 

Автор: volvo877 4.9.2008, 20:40
101626, а ты не создавай каждый раз ComboBox внутри ячейки... Ты создай его при создании формы, сделай его невидимым (и не забудь про BringToFront), а потом, при OnSelectCell просто перемещай туда, куда нужно:

Код
   TRect rect = StringGrid1->CellRect(ACol, ARow);
   cbx->Left = rect.Left + StringGrid1->Left;
   cbx->Top = rect.Top + StringGrid1->Top;

, и показывай... (после выбора значения опять скрывай)... В DRKB это было, если не ошибаюсь...

Автор: 101626 4.9.2008, 21:04
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)