![]() |
|
|
![]()
|
|
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 1 Всего: 8 |
Что-то у меня никак не получается, сделать чтобы у StringGrid одновременно было две опции (Options):
1. goEditing 2. goRowSelect У меня получается, что если поставить goRowSelect=true, то ячейки больше не редактируются. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
goEditing оставьте, а строку руками закрашивайте.
Добавлено через 8 минут и 35 секунд Вот пример:
Если у вас есть фиксированные строки/столбцы и они должны быть закрашены определённым цветом - делаете соответствующую проверку и закрашиваете их нужным цветом, либо вообще не закрашиваете. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 1 Всего: 8 |
Да, спасибо, проходит. Только много строк так не выбрать.
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
ИМХО. Стандартный мультистрочный выбор с помощью Shift и Ctrl не удобен на больших списках. Утомительно. Лучше добавить колонку с CheckBox и отмечать строки при помощи галочек. Нагляднее, на мой взгляд. Естественно добавить 3 кнопки (или контекстным меню) - отметить все, убрать все, инверсировать выбор. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Тогда придётся изобретать велосипед... Попробуйте как Anikmar советует. Правда, с другой стороны, создавать сотню CheckBox'ов и не забыть потом их все удалить, тоже не очень весело. Да и как быть с индексами... Я делал так: Нарисовал две картинки наподобие CheckBox'а (только красивее). Нулевой столбец в StringGrid'e выделил под эти CheckBox'ы и хранил в его строках либо "1", либо "0" (в зависимости от состояния) и в зависимости от состояния рисовал ту или иную картинку. При клике по ячейке в нулевом столбце - изменял её значение. Ещё надо DefaultDrawing = false. Но теперь надо будет всё рисовать руками. Зато, в этом случае, в ячейках можно делать многострочный текст. Это сообщение отредактировал(а) artsb - 15.4.2009, 11:18 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 1 Всего: 8 |
Столбец с чекбоксами у меня сейчас есть (я переписал код из drkb на C++, всё нормально исчезает/появляется при изменении числа строк таблицы).
Там только нет мультистрочного выбора с помощью Shift и Ctrl (типа MultiSelect в ListBox-e). Всё-таки с этим MultiSelect-ом удобнее (по сравнению с чекбоксами) выделять большие куски. Но, с другой стороны, если MultiSelect-ную опцию делать в StringGrid-е, то при любом редактировании ячейки все выбранные строки сбиваются. Вот интересно, можно ли как-нибудь комбинировать и мультиселект и редактирование? Это сообщение отредактировал(а) nworm - 15.4.2009, 15:17 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Ну сотня строк на экране не поместится по-любому, а на самом деле - вы правы, я же сам, сначала CheckBox ставил, а потом перешел к картинкам, так что лучше картинки. Тогда можно комбинировать мультиселеск с чек-боксами, при этом редактирование не собьет ранее выделенное. Если по шифту выделяете - то можно добавить кнопку "Отметить выделенное". Мне кажется вполне подойдет. |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Опять таки, goEditing оставьте, а выбранные строки строки закрашивайте руками. Например, можно создать ещё один столбец в самом конце (это якобы CheckBox'ы) и в OnCreate формы установить столбцу нулевую ширину и заполнить его нулями (т.е. отмеченных строк нет). Далее придумываете сочетание мышь+клавиатура при котором нужно отметить строку и в обработчике StringGrid'а OnMouseDown (ну или Up) делаете проверку и устанавливаете значение соответствующей строки в "1". Также придётся немного подправить функцию DrawCell: реализовать закраску выбранных строк определённым цветом. ЗЫ извиняюсь, что нет кода, а только логика, просто уже лень писать, тестировать и т.д. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 1 Всего: 8 |
Вроде всё прояснилось. Теперь надо будет выбрать какой-нибудь вариант и реализовать.
|
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Маленький совет: не пробуйте реализовать выбранный вариант в основном проекте. Сделайте отдельный и там тестируйте. Просто может получиться так, что в основном проекте всплывут ошибки никак не связанные с решаемой в данный момент задачей, а вы будете ломать голову, почему не работает.
Ну и собственно, удачи! -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |