![]() |
|
|
![]()
|
|
| Fanga |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 15.12.2009 Репутация: нет Всего: нет |
Надо сделать Морской бой с помощью DrawGrid
Все алгоритмы и структура ясна, проблема в незнании функций и методов DrawGrid Вопрос такой: в OnDrawCell я делаю закраску клетки, но для последующей закраски необходимо сделать обновление поля перерисовку, чтобы отображались новые изменения. Где это надо делать и с помощью какой команды осуществляется? if ((ACol == x) && (ARow == y)) { ((TDrawGrid *) Sender) -> Canvas->Brush->Color=0; ((TDrawGrid *) Sender) -> Canvas->FillRect(Rect); } Впринципе, можно сделать чисто с канвой, но вопрос тогда аналогичный... |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
|
||||
|
|||||
| Fanga |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 15.12.2009 Репутация: нет Всего: нет |
Проблема: при закраске более одной клетки за 1 раз, показывается закраска только одной клетки, как сделать так, чтобы были видны все закрашенные клетки? Если выделить мышкой все клетки таблицы отображаются все закрашенные клетки, но после новой прорисовки опять исчезают старые закрашивания.
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Клетки красятся так, как вы их красите сами в OnDrawCell. Ищите ошибку там
|
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Закрашивать нужно только текущую клетку (ACol, ARow). Остальные толку закрашивать нет (можно, конечно, сделать). Если вы будете прорисовывать и другие клетки, то при следующем вызове OnDrawCell, они перерисуются. OnDrawCell вызывается для каждой клетки отдельно! -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| Fanga |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 15.12.2009 Репутация: нет Всего: нет |
показывается закраска одной клетки, но закрашиваются несколько клеток все нормально
проблема в том, чтобы он сразу показывал все прокрашеные клетки, а не после обновленея экрана-_- а следующая проблема в стирании старых закрасок то есть я рисую 4-палубный кораблик(4 клетки) показывается одна, обвожу экран - показываются 4 клетки, потом рисую второй 4-палубник, старый стирается f ((ACol == x) && (ARow == y)) { ((TDrawGrid *) Sender) -> Canvas->Brush->Color=0; ((TDrawGrid *) Sender) -> Canvas->FillRect(Rect); } вот закраска конкретной клетки, если добавить условия в if то можно сразу несколько клеток закрасить я уже писал... Это сообщение отредактировал(а) Fanga - 20.12.2009, 18:18 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
У вас неправильный подход - OnDrawCell должен красить заданную клетку (и только ее) В ЛЮБОМ СЛУЧАЕ. А вот в какой цвет красить и должно определяться параметрами ACol и ARow в OnDrawCell
|
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Fanga, у вас неправильно условие составлено. Как писал xvr, в данный момент нужно закрашивать ТОЛЬКО текущую клетку. Вам нужно правильно условия составить.
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
![]()
|
| Правила форума "С++ 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. |