Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 24.05.2007, 22:15   #1
Иван1
Новичок
Джуниор
 
Регистрация: 24.05.2007
Сообщений: 1
Восклицание Вставка в stringgrid combobox-а.

Помогите плиззз.
У меня такое парево:надо,чтоб в stringgrid-е был столбец из combobox-ов.
Заранее ПАСИБА.
Иван1 вне форума Ответить с цитированием
Старый 25.05.2007, 07:59   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,540
По умолчанию

ну там кажеца для редактирования записей вставляются Edit'ы... смотришь как это сделано и делаешь свой stringGrid с комбобоксами.
ну или можно сделать невидимый комбобокс на форме. При выделении ячейки (на SelectCell, например) устанавливаешь его размеры как у ячейки и показываешь поверх ячейки и редактируешь, после редактирования опять скрываешь
pu4koff вне форума Ответить с цитированием
Старый 25.05.2007, 08:11   #3
Dunkas
Пользователь
 
Регистрация: 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;
Dunkas вне форума Ответить с цитированием
Старый 25.05.2007, 08:12   #4
Aleksandr
Форумчанин
 
Регистрация: 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.
Aleksandr вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка столбца в StringGrid artemavd Общие вопросы Delphi 8 29.07.2008 16:48
StringGrid, ComboBox... monushka Помощь студентам 12 02.05.2008 19:31
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя