|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.01.2012, 16:16 | #1 |
Пользователь
Регистрация: 24.09.2011
Сообщений: 26
|
Компонента для лабиринта
Всех с наступившим!
У меня такая проблема. Хочу замутить лабиринт, но мучаюсь с выбором визуальной компоненты. Лабиринт представляет собой двумерный массив клеток, открытых и закрытых. Я хочу чтобы каждая клетка имела свою картинку (в зависимости от того закрыта она или открыта). Вроде как неплохо подходит DrawGrid. Но как хранить данные о том закрыта ячейка или нет? Я думал надо наследовать DrawGrid, и добавить в качестве поля двумерный массив boolean. Но увы не знаю как сделать так, чтобы этот массив соответствовал и менял свой размер согласно кол-ву ячеек. Помоги с наследованием или предложите более рациональный подход) Заранее спасибо. |
02.01.2012, 17:01 | #2 |
Форумчанин
Регистрация: 28.12.2011
Сообщений: 124
|
И тебя также с Наступившим!
А в чём проблема? Создай динамический массив и в начале присвой ему размер этой таблицы. Пример создания этих всех клеток: opened: array of array of boolean;// такой синтаксис делфи? columns:=10; rows:=15; DrawGrid1.colCount:=columns; DrawGrid1.rowCount:=rows; Setlength(opened, DrawGrid1.colCount, DrawGrid1.rowCount); Хотя может ты что-то другое имел ввиду.
"Думай не о задаче, а о решении" (с)
|
02.01.2012, 18:17 | #3 |
Пользователь
Регистрация: 24.09.2011
Сообщений: 26
|
в принципе все верно, но если я добавлю пару столбцов, то мне как то придется и массив изменять (ручками), а я хотел именно класс наследовать. Чтобы к моей drawgrid припилить что-то вроде cells от stringgrid. Чтоб я мог делать что-то вроде
Код:
|
02.01.2012, 18:40 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 19,042
|
Если из интереса, то можно и своего наследника от StringGrid сделать, добавив в него соответствующий массив и переопределив ряд методов. Если потом новый компонент не использовать в других местах, то по трудозатратам выйдет больше, чем параллельное ведение этого массива. Все равно код изменяющий массив и в новом компоненте делать нужно, плюс решать проблемы переопределения методов и далеко не всегда это просто и очевидно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
02.01.2012, 18:55 | #5 |
Пользователь
Регистрация: 24.09.2011
Сообщений: 26
|
да я понял что придется посидеть)
но как хотя-бы посмотреть исходник класса drawgrid? |
02.01.2012, 19:02 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 19,042
|
Исходники для TStringGrid, TDrawGrid, TCustomDrawGrid, TCustomGrid все в юните Grids
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Компонента для 1с v7 | Studik | Win Api | 1 | 26.04.2011 17:39 |
Алгоритм прохождения лабиринта | PAVEL315 | Общие вопросы Delphi | 13 | 02.01.2010 01:22 |
Выход из лабиринта | karamelka87 | Общие вопросы C/C++ | 9 | 27.01.2009 23:49 |
Генерирование рандомного лабиринта | Djaconda | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 12.11.2007 19:00 |