На главную

Поместить ComboBox в ячейку таблицы

Поместить ComboBox в ячейку таблицы

ОГЛАВЛЕНИЕ    HOME  MAIL



Иногда бывает удобно, чтобы пользователь выбирал в ячейках таблицы один из нескольких вариантов. Удобнее всего для этого использовать ниспадающий список (компонент ComboBox). Этот пример показывает, как поместить ниспадающий список и поле ввода в таблицу.

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.DefaultRowHeight := ComboBox1.Height - 2;
  Edit1.Height := ComboBox1.Height;
  StringGrid1.Cells[0, 0] := '#';
  StringGrid1.Cells[1, 0] := 'Name';
  StringGrid1.Cells[3, 0] := 'Type #';
end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; Col, Row: Integer;
  var CanSelect: Boolean);
begin
  if Row = 0 then Exit;
  if Col = 1 then begin
    Edit1.Width := StringGrid1.ColWidths[1] + 2;
    Edit1.Left := StringGrid1.Left + StringGrid1.CellRect(1,
      Row).Left + 1;
    Edit1.Top := StringGrid1.Top + StringGrid1.CellRect(1,
      Row).Top + 1;
    Edit1.Text := StringGrid1.Cells[1, Row];
    Edit1.Tag := Row;
    Edit1.Visible := true;
    Edit1.SetFocus;
  end;
  if Col = 2 then begin
    ComboBox1.Width := StringGrid1.ColWidths[2] + 2;
    ComboBox1.Left := StringGrid1.Left + StringGrid1.CellRect(2,
      Row).Left + 1;
    ComboBox1.Top := StringGrid1.Top + StringGrid1.CellRect(2,
      Row).Top + 1;
    ComboBox1.Text := StringGrid1.Cells[2, Row];
    ComboBox1.Tag := Row;
    ComboBox1.Visible := true;
    ComboBox1.SetFocus;
  end;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  StringGrid1.Cells[1, Edit1.Tag] := Edit1.Text;
  Edit1.Visible := false;
end;

procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
  StringGrid1.Cells[2, ComboBox1.Tag] := ComboBox1.Text;
  ComboBox1.Visible := false;
end;

главная страницазадать вопрос
email: delphi4all@narod.ru
Hosted by uCoz