|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.05.2007, 23:15 | #1 |
Новичок
Джуниор
Регистрация: 24.05.2007
Сообщений: 1
|
Вставка в stringgrid combobox-а.
Помогите плиззз.
У меня такое парево:надо,чтоб в stringgrid-е был столбец из combobox-ов. Заранее ПАСИБА. |
25.05.2007, 08:59 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
ну там кажеца для редактирования записей вставляются Edit'ы... смотришь как это сделано и делаешь свой stringGrid с комбобоксами.
ну или можно сделать невидимый комбобокс на форме. При выделении ячейки (на SelectCell, например) устанавливаешь его размеры как у ячейки и показываешь поверх ячейки и редактируешь, после редактирования опять скрываешь |
25.05.2007, 09:11 | #3 |
Пользователь
Регистрация: 24.05.2007
Сообщений: 10
|
procedure TForm1.FormCreate(Sender: TObject);
begin {Высоту у combobox не получится установить, поэтому мы будем} {подгонять размер у грида под размер combobox!} StringGrid1.DefaultRowHeight := ComboBox1.Height; {Скрываем combobox} ComboBox1.Visible := False; end; procedure TForm1.ComboBox1Change(Sender: TObject); begin {Получаем выбранный элемент из ComboBox и помещаем его в грид} StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex]; ComboBox1.Visible := False; StringGrid1.SetFocus; end; procedure TForm1.ComboBox1Exit(Sender: TObject); begin {Получаем выбранный элемент из ComboBox и помещаем его в грид} StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex]; ComboBox1.Visible := False; StringGrid1.SetFocus; end; procedure TForm1.StringGrid1SelectCell(Sender : TObject; Col, Row: Integer; var CanSelect: Boolean); var R: TRect; begin if ((Col = 3) AND (Row <> 0)) then begin {Размер и расположение combobox подгоняем под ячейку} R := StringGrid1.CellRect(Col, Row); 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; |
25.05.2007, 09:12 | #4 |
Форумчанин
Регистрация: 22.05.2007
Сообщений: 511
|
Этот вопрос расматривался в Delphi World вот код
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); const cell_x = 2; cell_y = 2; var r:trect; begin if(cell_x>=StringGrid1.LeftCol) and (cell_x<=StringGrid1.LeftCol+String Grid1.VisibleColCount) and (cell_y>=StringGrid1.TopRow) and (cell_x<=StringGrid1.TopRow+StringG rid1.VisibleRowCount) then CheckBox1.Visible:=true else CheckBox1.Visible:=false; if (acol=cell_x) and (arow=cell_y) then begin r:=stringgrid1.CellRect(cell_x,cell _y); r.Left:=r.left+stringgrid1.left+2; r.right:=r.right+stringgrid1.left+2 ; r.top:=r.top+stringgrid1.top+2; r.bottom:=r.bottom+stringgrid1.top+ 2; CheckBox1.BoundsRect:=r; end; end; procedure TForm1.FormCreate(Sender: TObject); begin CheckBox1:=TCheckBox.Create(form1); CheckBox1.parent:=form1; CheckBox1.Caption:='Название'; end; end. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вставка столбца в StringGrid | artemavd | Общие вопросы Delphi | 8 | 29.07.2008 17:48 |
StringGrid, ComboBox... | monushka | Помощь студентам | 12 | 02.05.2008 20:31 |
Не могу внести строку из combobox в combobox!? | tacer | Помощь студентам | 1 | 30.11.2007 19:45 |