| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > работа со StringGrid и Excel |
| Автор: welt 11.4.2006, 16:11 | ||
| Я пишу программу для экспорта данных из Excel в StringGrid и их редактирования. У меня несколько вопросов. 1-ый Впорос такой: на форме есть StringGrid. Как сделать чтобы можно было редактировать данные в ячейках только для определенного стольбца/строки, а не для всей таблицы? (Для всей таблицы это делается легко: options -> goEditing.) Допустим по нажатию кнопки, строка 5(т.е. все ячейки в ней) была бы доступна для редактирования? Вот код для экспорта из Эксель в СтрингГрид:
2-ый Впорос такой: Как завершить excel по закрытию программы, чтобы его небыло в процессах? 3-ый Впорос такой: Допустим я изменяю текст в определенной ячейке (Например StringGrid1.Cells[2,3]) Как сделать, чтобы изменеия можно было сохранить в том же файле book1.xls, из которого я импротировал данные ? Заранее спасибо. |
| Автор: _hunter 11.4.2006, 16:29 |
| 1 -- в OnSelectCell смотри ряд/строку/условие. и добавляй/удаляй в Options goEditing 2 -- поиск по форуму 3 -- экспортировать изменения в тот же файл book1.xls, из которого ты импротировал данные P.S. один топик -- один вопрос |
| Автор: welt 11.4.2006, 18:53 | ||
| _hunter, По пункту 1:
Что именно нужно прописать? Может быть ты неправильно понял: нужно, чтобы по нажатию кнопки, строка N/столбец N (т.е. все ячейки в стоке/столбце) была бы доступна для редактирования. (причем, только определенная строка/столбец) |
| Автор: _hunter 12.4.2006, 11:14 |
| нужно прописать ЕСЛИ (кнопка_была_нажата И строка == N И столбец == K [наверное это имелось в виду] ) ТО добавляем в множество Options элемент goEditing ИНАЧЕ убираем из множества Options элемент goEditing |
| Автор: welt 12.4.2006, 19:23 | ||||
| ок, спасибо, _hunter. Теперь еще такой вопрос: Я создаю на stringGrid1 массив из кнопок-вертикальный ряд кнопок сверху вниз. Эти кнопки располагаются на левом столбце СтрингГрида. Создаю я их так:
В кнопке2 прописано так:
Задача в том, чтобы по нажатию на каждую из созданный кнопок, появлялась бы форма2. Причем заметьте, если в цикле вместо form1.StringGrid1.InsertControl(btns[i]); написать так form1.InsertControl(btns[i]); то все вроде бы нормально: по нажатию на эти кнопочки-форма появляется... Но дело все в том, что эти кнопки уже лежат не на СтрингГриде, а на форме. А нужно, чтобы они лежали на СтрингГриде. Вроде бы, еще можно чтобы в роли кнопок были FixCols, но я не знаю как в них OnClick обрабатывать.... Если кто-нибудь подскажет выход из этой ситуации.. то буду очень благодарен |
| Автор: Albinos_x 12.4.2006, 21:01 | ||
|
| Автор: welt 13.4.2006, 11:32 |
| Albinos_x, я это в цикл дописал, кнопочки появляются как и прежде, но при нажатии на них форма2 не появляется. А что значит цифра "5" ? Можно ли вообще так сделать или подскажите кто-нибудь как сделать, чтобы FixCols были ввиде кнопок. |
| Автор: welt 13.4.2006, 11:58 |
| Задача усложнилась Смотреть http://forum.vingrad.ru/index.php?act=ST&f=86&t=91700&unread=1 тему |
| Автор: _hunter 13.4.2006, 11:58 |
| по вышеописанной проблеме -- явно кнопка создается не там/не нажимается. поставь точку останова в Button2Click посмотри приходит ли сюда выполнение Добавлено @ 12:02 по нажатию на фиксированные ячейки: увеличиваем FixedCols/Rows до двух и в обработчике OnClick сетки с помощью MouseToCell смотрим где мы тыкнули -- если 0-й ряд/строка -- вызываем функцию показа формы; иначе ничего не делаем |
| Автор: Snowy 13.4.2006, 13:15 | ||
|