Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2011, 16:37   #1
torredo@inbox.ru
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 1
Сообщение StringGrid

Подскажите пожалуйста мне надо чтобы в StringGrid-e в название столбцов был Combobox, в StringGrid отображен Экселевский файл.

Суть такая в програмке которую я пишу выбираешь через обзор файлов экселевский файл(в котором прайс лист) столбцы в каждом прайс листе стоят по разному и я хочу сделать чтобы в StringGrid-e можно было в каждом столбце поставить через Combobox название столбца(Артикул, Наименование, Цена, Не используется,и тд.)

Кто-нибудь что то подобное делал?
torredo@inbox.ru вне форума Ответить с цитированием
Старый 17.10.2011, 01:22   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Как показывать нестандартный встроенный редактор в ячейке stringgrid (например combobox)
Пример дан для 4-й колонки и любой ненулевой строки.

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stringgrid lblondy Компоненты Delphi 1 07.06.2011 23:39
stringgrid madkot Помощь студентам 1 19.04.2011 21:56
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
StringGrid Farmokolog Компоненты Delphi 9 13.02.2011 13:58
БД и StringGrid artemavd БД в Delphi 1 24.08.2008 10:36