Oper01 |
Отправлено: 20.01.2004, 22:36 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Подскажите, как сделать в компоненте StringGrid один столбец, каждая ячейка которого представляла бы собой ниспадающий список типа ComboBox или любой другой, чтобы можно было выбрать значение ячейки из заранее заданных значений. |
|
Valdemar |
Отправлено: 21.01.2004, 10:57 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Можно попробовать расположить на форме ComboBox (один или несколько, в зависимости от необходимости), заполнить его нужными значениями, задать нужные размеры, равные размерам ячеек StringGrid и сделать не видимым. Затем по щелчку мышки на StringGrid определять ячейку на которой щелкнули и для ComboBox сделать значения Left и Top такими как у выделенной ячейки и сделать его видимым. После выбора значения из ComboBox опять сделать его невидимым.
Вот небольшой пример, только его надо довести до ума:
CODE | __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
CB->Width=SG->DefaultColWidth;
CB->Height=SG->DefaultRowHeight;
CB->Visible=false;
}
void __fastcall TForm1::SGClick(TObject *Sender)
{
if(SG->Col<5)
{
CB->Left=SG->Left+(SG->DefaultColWidth+SG->GridLineWidth)*SG->Col+3;
CB->Top=SG->Top+(SG->DefaultRowHeight+SG->GridLineWidth)*SG->Row+3;
CB->Visible=true;
}
else
CB->Visible=false;
}
void __fastcall TForm1::CBChange(TObject *Sender)
{
SG->Cells[SG->Col][SG->Row]=CB->Text;
CB->Visible=false;
} |
здесь SG — это StringGrid, CB — это ComboBox.
Возможно есть готовый компонент, который все это делает. |
|
Oper01 |
Отправлено: 21.01.2004, 23:48 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Большое спасибо! С небольшими доработками использовал Ваш код Valdemar. |
|