компонент для вывода таблицы |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
компонент для вывода таблицы |
marwell |
13.11.2012 19:50
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
доброго дня
имеются две колонки в Excel. Необходимо вывести куда нибудь на форму две таблицы. Значение ячейки "111" в первой таблице нужно оформить в виде выпадающего списка, значения для которого берутся из первой колонки в Excel. Аналогично для "222", только значения берутся из второй колонки. Все остальные ячейки вычисляются по формулам, в зависимости от значений ячеек "111" и "222". Вопрос: какой тут компонент использовать, чтобы можно было так выводить на форму? |
IUnknown |
13.11.2012 20:33
Сообщение
#2
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Да хоть StringGrid. Что, нельзя в его ячейку затолкать ComboBox? Можно
|
marwell |
13.11.2012 20:34
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
спасибо! |
marwell |
13.11.2012 21:26
Сообщение
#4
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
хм, видимо что то делаю не так. Не добавляются строки в ComboBox
|
marwell |
14.11.2012 15:42
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
хм, строки появляются, но каким то странным образом. после клика на ячейке и прокручивания мышки
а нужен раскрывающийся список |
IUnknown |
14.11.2012 16:14
Сообщение
#6
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Не понял, что у тебя не так работает?
Тебе что, надо чтоб сразу после клика на ячейку вылетал этот самый выпадающий список? Добавь вот эту строку: procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; |
marwell |
14.11.2012 17:07
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
спасибо, сработало
а можно еще вопрос: событие OnClick срабатывает при выборе одного из значений из списка, OnExit - при выходе из ComboBox. Зачем в обеих случаях нужен одинаковый кусок кода? Одного не достаточно? {Получаем выбранный элемент из ComboBox и помещаем его в грид} |
marwell |
14.11.2012 17:34
Сообщение
#8
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
чтож за беда такая с этой таблицей
хочу вставить в соседнюю ячейку число, соответствующее выбранному в ComboBox. Пишу так: procedure TForm1.ComboBox1Exit(Sender: TObject); вылетает с ошибкой на строчке StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row+1]:=Sheet.Cells[StringGrid1.Col,2].Text; вроде все правильно же делаю... Сообщение отредактировано: marwell - 14.11.2012 17:40 |
marwell |
14.11.2012 18:01
Сообщение
#9
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
эхэх, чет совсем засиделся
E.Workbooks[1].Close; забыл убрать оказывается |
IUnknown |
14.11.2012 19:12
Сообщение
#10
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата событие OnClick срабатывает при выборе одного из значений из списка, OnExit - при выходе из ComboBox. Зачем в обеих случаях нужен одинаковый кусок кода? И у меня тоже вопрос: а кто вообще изначально говорил про OnClick? Там был OnChange вообще-то. OnClick - это уже твоя придумка.Не нравится дублирование кода - вынеси этот код в отдельную процедуру и вызывай по обоим событиям. |
marwell |
14.11.2012 20:00
Сообщение
#11
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
И у меня тоже вопрос: а кто вообще изначально говорил про OnClick? Там был OnChange вообще-то. OnClick - это уже твоя придумка. прошу прощения, действительно мое. P.S если еще будут вопросы про этот же StringGrid или ComboBox, можно писать в эту же тему, или надо создавать новую? |
IUnknown |
14.11.2012 20:21
Сообщение
#12
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Ну, если про этот же - то чего размазывать по разным темам? Пиши сюда
|
marwell |
14.11.2012 20:33
Сообщение
#13
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
после выбора строки в ComboBox, выбранная строка вставляется в ячейку, и курсор переход на след ячейку вниз, и соответственно опять раскрывается ComboBox. Можно ли запретить такой автоматический переход? В свойствах StringGrida не нашел
|
marwell |
14.11.2012 21:02
Сообщение
#14
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
думал может в конце события OnExit у ComboBox запомнить stringgrid1.col и stringgrid1.row и "не дать им измениться", но это что то совсем не то
Сообщение отредактировано: marwell - 14.11.2012 21:09 |
IUnknown |
14.11.2012 21:16
Сообщение
#15
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата после выбора строки в ComboBox, выбранная строка вставляется в ячейку, и курсор переход на след ячейку вниз Не воспроизводится. Может, ты еще что-нибудь добавлял в свойства ComboBox-а? Очень похоже, что у тебя происходит не одинарный, а двойной клик для выбора элемента.Вообще не должно быть такого перехода, попробуй на чистом гриде, или даже на этом же, введи данные в обычную ячейку (без комбобокса), и нажми Enter - фокус останется на этой же ячейке. |
marwell |
14.11.2012 21:35
Сообщение
#16
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Не воспроизводится. Может, ты еще что-нибудь добавлял в свойства ComboBox-а? Очень похоже, что у тебя происходит не одинарный, а двойной клик для выбора элемента. Вообще не должно быть такого перехода, попробуй на чистом гриде, или даже на этом же, введи данные в обычную ячейку (без комбобокса), и нажми Enter - фокус останется на этой же ячейке. да, действительно, на чистом гриде все именно так работает. А на том гриде почему то по другому. Непонятно почему. В комбобоксе только два события описаны: OnChange и OnExit. Срабатывает на одинарное нажатие. Других свойств вроде не добавлял Добавлено через 6 мин. гм, попытаюсь объяснить. После клика на ячейке раскрывается список, выбираем строку, строка вставляется в ячейку. Но, почему то как будто кнопка мыши остается нажатой и удерживаемой, как при выделении. Поэтому, при наведении курсора на другую ячейку, срабатывает событие одинарного клика и раскрывается комбобокс. Это происходит из-за комбобкса, вставленного в ячейку? Сообщение отредактировано: marwell - 14.11.2012 21:44 |
IUnknown |
14.11.2012 22:07
Сообщение
#17
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
У меня не происходит выделения другой ячейки, вот в чем проблема. Закрывается комбобокс и фокус остается на ячейке, в которую было внесено значение. А я ведь скопировал в точности твой код. Может, от версии Дельфи зависит (в более новой чего-нибудь поправили, например)? У меня XE2, могу чуть позже на 2009-ой проверить.
|
marwell |
15.11.2012 11:50
Сообщение
#18
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
У меня не происходит выделения другой ячейки, вот в чем проблема. Закрывается комбобокс и фокус остается на ячейке, в которую было внесено значение. А я ведь скопировал в точности твой код. Может, от версии Дельфи зависит (в более новой чего-нибудь поправили, например)? У меня XE2, могу чуть позже на 2009-ой проверить. странное поведение. У меня Delphi 7. Может скинуть папку с файлами проекта? Добавлено через 4 мин. хотя, может и кода хватит
|
IUnknown |
15.11.2012 13:55
Сообщение
#19
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Да, с этим кодом глючит. Попробую посмотреть, что не так...
|
marwell |
15.11.2012 14:12
Сообщение
#20
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
|
Текстовая версия | 1.11.2024 23:25 |