ZDV |
Отправлено: 20.12.2005, 10:56 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Привет всем.
Помогите советом, а лучше кодом:
Как мне в ячейку компонента TStringGrid поместить другой компонент,
ну к примеру TComboBox?
Заранее спасибо |
|
gvg |
Отправлено: 20.12.2005, 11:29 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
Было это уже, поищите на форуме. Но, полагаю, проще использовать сторонний компонент. |
|
Лена |
Отправлено: 20.12.2005, 11:34 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
Компонет AdvStringGrid.
http://www.tmssoftware.com/advgrid2.htm |
|
Gal |
Отправлено: 20.12.2005, 11:36 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 124
|
Покажу на примере TEdit
Двойной click
CODE |
static int Row; // глоиальная переменная определяемая
void __fastcall TMainForm::StringGridDrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
if (State.Contains(cdsSelected))
{
Row = ARow;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::StringGridDblClick(TObject *Sender)
{
if (Col == 1) // Первая колонка
{
TRect myRect;
TEdit *Edit = new TEdit(this);
myRect = StringGrid->CellRect(Col, Row);
Edit->Parent = StringGrid;
Edit->Top = myRect.Top;
Edit->Left = myRect.Left;
Edit->Height = myRect.Bottom — myRect.Top;
Edit->Width = myRect.Right - myRect.Left;
Edit->Font->Style = TFontStyles()<< fsBold;
Edit->Text = StringGrid->Cells[Col][Row];
Edit->SetFocus();
Edit->OnExit = EditExit; // событие при покидании поля Edit
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::EditExit(TObject *Sender)
{
String EditStr = ((TEdit*)Sender)->Text.Trim();
if(!EditStr.IsEmpty())
{
EditStr[1] = String(EditStr[1]).UpperCase()[1]; // Первуб букву в верхний регистр
}
StringGrid->Cells[Col][Row] = EditStr;
delete((TEdit*)Sender);
}
|
вроде бы понятно объяснил |
|