|
Иногда бывает удобно, чтобы пользователь выбирал в ячейках таблицы один из нескольких вариантов. Удобнее всего для этого использовать ниспадающий список (компонент 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
|