IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> компонент для вывода таблицы
marwell
сообщение 13.11.2012 19:50
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


доброго дня
имеются две колонки в Excel. Необходимо вывести куда нибудь на форму две таблицы. Прикрепленное изображение Значение ячейки "111" в первой таблице нужно оформить в виде выпадающего списка, значения для которого берутся из первой колонки в Excel. Аналогично для "222", только значения берутся из второй колонки. Все остальные ячейки вычисляются по формулам, в зависимости от значений ячеек "111" и "222". Вопрос: какой тут компонент использовать, чтобы можно было так выводить на форму?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
marwell
сообщение 13.11.2012 21:26
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


хм, видимо что то делаю не так. Не добавляются строки в ComboBox


var
Form1: TForm1;
E,Sheet:variant;
iRow, iClm: integer;

implementation

{$R *.dfm}

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var R : TRect;
begin
if ((ACol = 1) AND
(ARow <> 0)) then begin
{Размер и расположение combobox подгоняем под ячейку} {combobox должен быть в первой строке во втором столбце}
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;

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
{Высоту у combobox не получится установить, поэтому мы будем}
{подгонять размер у грида под размер combobox!}
StringGrid1.DefaultRowHeight := ComboBox1.Height;
{Скрываем combobox}
ComboBox1.Visible := False;
StringGrid1.ColWidths[0]:=40;
StringGrid1.ColWidths[1]:=300;
StringGrid1.ColWidths[2]:=110;
StringGrid1.ColWidths[3]:=110;
StringGrid1.ColWidths[4]:=110;
E:=CreateOleObject('Excel.Application');
E.WorkBooks.Open('C:\\123.xlsx');
E.WorkBooks.item [1].Activate;
Sheet:=E.WorkBooks.item [1].Sheets.item[1];
iRow := Sheet.UsedRange.Row + Sheet.UsedRange.Rows.Count - 1; //последняя заполненая строка
iClm := Sheet.UsedRange.Column + Sheet.UsedRange.Columns.Count - 1; //последний заполненый столбец
for i:=1 to iRow do ComboBox1.Items.Add(Sheet.Cells[i,1].Text);
...
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;

end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
marwell   компонент для вывода таблицы   13.11.2012 19:50
IUnknown   Да хоть StringGrid. Что, нельзя в его ячейку затол...   13.11.2012 20:33
marwell   Да хоть StringGrid. Что, нельзя в его ячейку зато...   13.11.2012 20:34
marwell   хм, видимо что то делаю не так. Не добавляются стр...   13.11.2012 21:26
marwell   хм, строки появляются, но каким то странным образо...   14.11.2012 15:42
IUnknown   Не понял, что у тебя не так работает? Тебе что, н...   14.11.2012 16:14
marwell   спасибо, сработало а можно еще вопрос: событие OnC...   14.11.2012 17:07
marwell   чтож за беда такая с этой таблицей :( хочу встави...   14.11.2012 17:34
marwell   эхэх, чет совсем засиделся E.Workbooks[1].Close; з...   14.11.2012 18:01
IUnknown   И у меня тоже вопрос: а кто вообще изначально гово...   14.11.2012 19:12
marwell   И у меня тоже вопрос: а кто вообще изначально гов...   14.11.2012 20:00
IUnknown   Ну, если про этот же - то чего размазывать по разн...   14.11.2012 20:21
marwell   после выбора строки в ComboBox, выбранная строка в...   14.11.2012 20:33
marwell   думал может в конце события OnExit у ComboBox запо...   14.11.2012 21:02
IUnknown   Не воспроизводится. Может, ты еще что-нибудь добав...   14.11.2012 21:16
marwell   Не воспроизводится. Может, ты еще что-нибудь доба...   14.11.2012 21:35
IUnknown   У меня не происходит выделения другой ячейки, вот ...   14.11.2012 22:07
marwell   У меня не происходит выделения другой ячейки, вот...   15.11.2012 11:50
IUnknown   Да, с этим кодом глючит. Попробую посмотреть, что ...   15.11.2012 13:55
marwell   Да, с этим кодом глючит. Попробую посмотреть, что...   15.11.2012 14:12
IUnknown   С событиями все нормально. Просто достаточно было ...   15.11.2012 15:02
marwell   спасибо! насчет кода, ты прав, там очень много...   15.11.2012 15:36
marwell   пришлось опять поднять эту тему) у комбобоксов не ...   4.12.2012 15:47
marwell   и вопрос номер 2: необходимо, чтобы при ручном изм...   4.12.2012 20:26
IUnknown   А где ты, интересно, ставишь DropDownCount? Неужел...   6.12.2012 1:49
marwell   А где ты, интересно, ставишь DropDownCount? Неуже...   6.12.2012 11:28
marwell   попробовал сделать так, как предложил Serge_Blizny...   6.12.2012 12:40
IUnknown   К сожалению, тот форум сбоит, но он тебе советовал...   6.12.2012 17:01
marwell   К сожалению, тот форум сбоит, но он тебе советова...   6.12.2012 17:09
Гость   спасибо :) я это приписал так, только чтоб увиде...   13.03.2014 23:17
marwell   доброго времени суток, форумчане вот уж никак не д...   30.01.2013 14:03
marwell   ответили на другом форуме надо было в качестве par...   1.02.2013 12:45


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 4.05.2024 9:40
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"