Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.12.2010, 18:17
Аватар для Voron
Voron Voron вне форума
Новичок
 
Регистрация: 16.09.2010
Сообщения: 61
Репутация: 10
По умолчанию Проблема с StringGRID

Подскажите, кто знает как в ячейку компанента stringgrid вставить список типа combobox как в dbgrid picklist
Ответить с цитированием
  #2  
Старый 17.12.2010, 07:36
Аватар для Delphist
Delphist Delphist вне форума
Новичок
 
Регистрация: 10.12.2010
Адрес: Курган
Сообщения: 68
Репутация: 6002
Счастье

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  {Высоту combobox'а не изменишь, так что вместо combobox'а
  будем изменять высоту строки grid'а !}
  StringGrid1.DefaultRowHeight := ComboBox1.Height; {Спрятать combobox}
  ComboBox1.Visible := False; ComboBox1.Items.Add('Hello World');
  ComboBox1.Items.Add('World Hello!');
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;

В принцепе можно все красивее сделать, но давай как то сам, а мне работать надо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:39.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter