| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Морской бой |
| Автор: Fanga 20.12.2009, 12:02 |
| Надо сделать Морской бой с помощью DrawGrid Все алгоритмы и структура ясна, проблема в незнании функций и методов DrawGrid Вопрос такой: в OnDrawCell я делаю закраску клетки, но для последующей закраски необходимо сделать обновление поля перерисовку, чтобы отображались новые изменения. Где это надо делать и с помощью какой команды осуществляется? if ((ACol == x) && (ARow == y)) { ((TDrawGrid *) Sender) -> Canvas->Brush->Color=0; ((TDrawGrid *) Sender) -> Canvas->FillRect(Rect); } Впринципе, можно сделать чисто с канвой, но вопрос тогда аналогичный... |
| Автор: xvr 20.12.2009, 13:05 | ||||
|
| Автор: Fanga 20.12.2009, 13:55 |
| Проблема: при закраске более одной клетки за 1 раз, показывается закраска только одной клетки, как сделать так, чтобы были видны все закрашенные клетки? Если выделить мышкой все клетки таблицы отображаются все закрашенные клетки, но после новой прорисовки опять исчезают старые закрашивания. |
| Автор: xvr 20.12.2009, 14:08 |
| Клетки красятся так, как вы их красите сами в OnDrawCell. Ищите ошибку там |
| Автор: Fanga 20.12.2009, 18:14 |
| показывается закраска одной клетки, но закрашиваются несколько клеток все нормально проблема в том, чтобы он сразу показывал все прокрашеные клетки, а не после обновленея экрана-_- а следующая проблема в стирании старых закрасок то есть я рисую 4-палубный кораблик(4 клетки) показывается одна, обвожу экран - показываются 4 клетки, потом рисую второй 4-палубник, старый стирается f ((ACol == x) && (ARow == y)) { ((TDrawGrid *) Sender) -> Canvas->Brush->Color=0; ((TDrawGrid *) Sender) -> Canvas->FillRect(Rect); } вот закраска конкретной клетки, если добавить условия в if то можно сразу несколько клеток закрасить я уже писал... |
| Автор: xvr 20.12.2009, 20:06 |
| У вас неправильный подход - OnDrawCell должен красить заданную клетку (и только ее) В ЛЮБОМ СЛУЧАЕ. А вот в какой цвет красить и должно определяться параметрами ACol и ARow в OnDrawCell |
| Автор: artsb 21.12.2009, 21:49 |
| Fanga, у вас неправильно условие составлено. Как писал xvr, в данный момент нужно закрашивать ТОЛЬКО текущую клетку. Вам нужно правильно условия составить. |