![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пример ComboBox в ячейке DBGrid вместо значения. [D5]
Delph © (2002-11-11 16:18:00)Не подскажете исходник? Спасибо.
Abu (2002-11-11 19:01:00) [1]Для StringGrid-a:
Как показывать нестандартный встроенный редактор (inplace editor) в ячейке stringgrid (например combobox).
procedure TForm1.FormCreate(Sender: TObject);
begin
{Высоту combobox"а не изменишь, так что вместо combobox"а
будем изменять высоту строки grid"а !}
StringGrid1.DefaultRowHeight := ComboBox1.Height;
{Спрятать combobox}
ComboBox1.Visible := False;
ComboBox1.Items.Add("Delphi Kingdom");
ComboBox1.Items.Add("Королевство Дельфи");
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
{Перебросим выбранное в значение из ComboBox в grid}
StringGrid1.Cells[StringGrid1.Col,
StringGrid1.Row] :=ComboBox1.Items[ComboBox1.ItemIndex];
ComboBox1.Visible := False;
StringGrid1.SetFocus;
end;
procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
{Перебросим выбранное в значение из ComboBox в grid}
StringGrid1.Cells[StringGrid1.Col,
StringGrid1.Row] :=ComboBox1.Items[ComboBox1.ItemIndex];
ComboBox1.Visible := False;
StringGrid1.SetFocus;
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
R: TRect;
begin
if ((ACol = 3) AND (ARow <> 0)) then
begin
{Ширина и положение ComboBox должно соответствовать
ячейке StringGrid}
R := StringGrid1.CellRect(ACol, ARow);
R.Left := R.Left + StringGrid1.Left;
R.Right := R.Right + StringGrid1.Left;
R.Top := R.Top + StringGrid1.Top;
R.Bottom := R.Bottom + StringGrid1.Top;
ComboBox1.Left := R.Left + 1;
ComboBox1.Top := R.Top + 1;
ComboBox1.Width := (R.Right + 1) - R.Left;
ComboBox1.Height := (R.Bottom + 1) - R.Top;
{Покажем combobox}
ComboBox1.Visible := True;
ComboBox1.SetFocus;
end;
CanSelect := True;
end;
Aristarh (2002-11-11 17:36:00) [2]Используй ehDBGrid из библиотеки EhLIB. Классная вещь, и для снг бесплатная.
down (2002-11-11 16:50:00) [3]Нужно обрабатывать OnDrawCell, для рисования Checkbox использовать DrawFrameControl.
Delph (2002-11-11 16:29:00) [4]Пардон, CheckBox!