На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Компоненты / Как показывать нестандартный встроенный редактор (inplace editor) в ячейке stringgrid (например combobox). Сделать домашней страницей Добавить в избранное Написать писмо

Как показывать нестандартный встроенный редактор (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;


Источник: Дельфи. Вокруг да около.



Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz