![]() |
|
|
![]()
|
|
| pavelslap |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 27.11.2009 Репутация: нет Всего: нет |
Добрый день, ув. программисты! Вопрос именно по билдеру 6, т.к. в других версиях синтаксис может отличаться. Мне нужно по нажатии кнопки Button1, закрасить определённые ячейки в StringGrid, в котором уже сгенерирован двухмерный массив mas[X][Y].
Я пытался обрабатывать событие OnDrawCell, т.к. в нём есть необходимые параметры для закраски, но в таком случае: 1) Ячейки закрашиваются сразу после запуска программы, а мне надо по нажатии Button; 2) Поверх закрашеннных ячеек невозможно вывести текст. Я работал вот с этим кодом:
Помогите, пожалуйста его преобразовать, дополнить, или предложите свой вариант. Искренне надеюсь на Вас и Ваш форум. Заранее спасибо! |
|||
|
||||
| artsb |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Для этого можно использовать флаг: при старте он равен false и значит ничего не отрисовываем, после нажатия на кнопку флаг равен true - рисуем. Текст нужно рисовать "в ручную" после заливки:
Это сообщение отредактировал(а) artsb - 27.11.2009, 23:14 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
||||
|
|||||
| pavelslap |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 27.11.2009 Репутация: нет Всего: нет |
Спасибо за ответ, но можно поподробнее, как сделать флаг
|
|||
|
||||
| artsb |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
В закрытой области класса формы:
Далее в конструкторе формы:
При нажатии на кнопку:
В OnDrawCell:
Это сообщение отредактировал(а) artsb - 27.11.2009, 23:23 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
||||||||
|
|||||||||
| artsb |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
По поводу первого.
Ещё как вариант можно сделать так: Создаёте обработчик OnDrawCell. Потом выбираете на форме StringGrid1 и в ObjectInspector'е на вкладке Events напротив строки OnDrawCell всё стираете. В обработчике нажатия на кнопку пишете:
Потом можно в нужном месте написать:
И ячейки опять не будут закрашиваться. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
||||
|
|||||
| pavelslap |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 27.11.2009 Репутация: нет Всего: нет |
Большое спасибо!
|
|||
|
||||
| pavelslap |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 27.11.2009 Репутация: нет Всего: нет |
Очень долго мучался и решил спросить насчёт TextOutA. Он не хочет выводить текст поверх закрашенных ячеек..
//---------------------------------------------------------------------------
Он применяется там, где комментарии. Обьясните, пожалуйста, почему не работает... Я естественно снял комментарии)) Это сообщение отредактировал(а) pavelslap - 28.11.2009, 12:20 |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Так вы неправильно написали
Это сообщение отредактировал(а) artsb - 28.11.2009, 13:28 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| pavelslap |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 27.11.2009 Репутация: нет Всего: нет |
Спасибо, теперь всё работает, а вот как - это другой вопрос.
Из-за вот этой строки всё стало работать:
Добавлено через 6 минут и 22 секунды А, и ещё. Как выровнять по центру текст в ячейках StringGrid? |
||||
|
|||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
а какой толк от неё? Тогда надо использовать не TextOutA, а DrawText:
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| pavelslap |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 27.11.2009 Репутация: нет Всего: нет |
У меня остался последний вопрос:
Вначале я заливаю весь stringgrid серым цветом. Затем несколько ячеек я выделяю зелёным. Как очистить StringGrid от зелёных ячеек, при нажатии кнопки чтобы затем снова закрасить ячейки зелёным ? Это сообщение отредактировал(а) pavelslap - 28.11.2009, 17:21 |
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Если вы их закрашиваете по какому-то условию, то в обработчике нажатия кнопки сначала изменяете условия. А потом просто вызываете StringGrid1->Repaint();
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| pavelslap |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 27.11.2009 Репутация: нет Всего: нет |
Спасибо!
|
|||
|
||||
| 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. |