Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

[Delphi] StringGrid: центрирование символа, выделение поля

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> [Delphi] StringGrid: центрирование символа, выделение поля
Имя
Сообщение << Старые топики   Новые топики >>
[Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-16 16:47:40.866666   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Собственно сабж, есть StringGrid - размер столбцов и строк одинаков тобишь клеточки. Размер - 9х9 (судоку).
Столкнулся с двумя проблемами но не вижу алгоритмов их решения, может кто подскажет?
1. В каждой клетке имеется - цифра, нужно отцентрировать ее в этой клетке, как?
2. Границы должны быть жирными вокруг, и разделяющие 3х3 квадраты вот так:

Post #: 1
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-16 18:57:55.690000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
quote:

ORIGINAL: GangstaLC
не вижу алгоритмов их решения, может кто подскажет?

Что такое алгоритм… Тебе не алгоритм нужен, а нормальный контрол написать. Допиливать StringGrid под твою задачу - извращение.
Post #: 2
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-16 19:24:46.690000   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Аналогов StringGrid под мою цель нет случайно? [:(]
Post #: 3
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-16 20:37:10.963333   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Ооо,чувак)) Светит тебе брать на себя отрисовку TStringGrid)).
Как бы намекаю: нарисовать простую черно-белую симметричную табличку с цифрами можно бы и на Canvas чего попало - так и возни будет меньше,забей же на готовое.
Post #: 4
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-17 00:06:04.710000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: GangstaLC

Аналогов StringGrid под мою цель нет случайно? [:(]

Типовой вопрос начинающего дельфиста-формошлёпа: "А где взять компонент, который…".
Post #: 5
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-17 13:17:14.140000   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
quote:

Типовой вопрос начинающего дельфиста-формошлёпа: "А где взять компонент, который…".

Черт) Ну что-же похоже все через это проходят)

quote:

Ооо,чувак)) Светит тебе брать на себя отрисовку TStringGrid)).
Как бы намекаю: нарисовать простую черно-белую симметричную табличку с цифрами можно бы и на Canvas чего попало - так и возни будет меньше,забей же на готовое.

Отыскал вчера исходник реализации судоку, да, нарисовано на канве, это впринципе нарисую, дело в том что когда при нажатии на ячейку, она (ячейка) получает фокус (выделяется по периметру штрихованной линией), только из исходника ничего непонятно( Можно в общих узнать каким образом
ячейки получают фокус?
P.S дело не столько в отрисовке таблицы а в возможности указывать/работать с ячейками(
http://files.mail.ru/BP90NZ - исходник того судоку

Появилась одна идея, очень нудная но попробовать можно:
берем поле, (я его картинкой нарисовал в фотошопе), ставим в каждую клетку Label с Caption= " " (1 отступ) поверх каждого Label'а создаем фигуру квадрат чтобы ровно вмещалась полностью в ячейку, это будет маской ячейки, т.е. это и будет отвечать за изменение этой ячейки по нажатию. Но (9х9=81) 81 квадратик отрисовывать в каждую ячейку..не думаю что это правильный путь
Post #: 6
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-18 01:09:38.473333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Определяй координаты клика и дорисовывай всё, что тебе надо. Это называется windowsless окно (компонент).
Post #: 7
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-18 02:13:18.793333   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
На компоненты лучше совсем забей и попотей сам. Фокус - всего лишь ещё 1 нарисованный квадратик пунктиром. Параметры картинки (главное-размеры всего в ней) ,а также место "тычка" тебе известны. Задача сведется к нахождению номера квадратика, 1 строчка буквально. В общем, _SaZ_ дело сказал. "Use brains,Luke,not Force"
Post #: 8
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-18 06:27:02.570000   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Спс ребят) что бы без вас делал)
Post #: 9
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-18 09:30:22.583333   
GangstaLC

Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
Подскажите, я решил действовать по такому алгоритму:
1) Кликаю, получаю координаты, пишу их в переменные
2) Вылезает ПопапМеню в нем щелкаю по 1 из 9 пунктов
3) Этот пункт проверяет координаты (всего у меня 81 ячейка), т.е. 81 раз if … then и выбирается компонент (TLabel) которому и присваевается значение

И в итоге: у меня 9 пунктов, на каждый пункт по 81 проверке (1-2 строчки), слишком много, как бы сказать, "нудного кода"), правильно ли я делаю? Есть ли пути проще и экономичнее?
Post #: 10
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-18 11:05:44.716666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Не правильно. Зачем 81 писать одинаковый if…then, когда можно всё вынести в отдельный метод? От уже формошлёпы…

Man, начни с этого: http://www.rsdn.ru/summary/3165.xml , а потом это: http://www.rsdn.ru/summary/1233.xml

P.S. зная размер сетки и координаты клика можно легко посчитать, в какую ячейку кликнули. А для ввода значения лучше использовать EditBox (или как там в дэлфи), а не меню.
Post #: 11
RE: [Delphi] StringGrid: центрирование символа, выделение поля - 2010-04-18 11:52:07.936666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: GangstaLC
3) Этот пункт проверяет координаты (всего у меня 81 ячейка), т.е. 81 раз if … then и выбирается компонент (TLabel) которому и присваевается значение

Почему 81 раз if-then? 9+9 = 18. 9 на то чтобы выяснить номер квадрата по вертикали, и ещё 9 чтобы выяснить номер квадрата по горизонтали.
Но и это ведь тоже не умно. Можно же действительно вычислить. Возьми ручку, бумажку, и вычисли координаты углов всех квадратов. И считай их до тех пор, пока в голове не наступит просветления. Если когда ты обсчитаешь все углы будет ещё непонятно, то действуй следующим алгоритмом: выбирай два случайных числа, и ручкой по бумажке считай (никаких графических методов решения!) в какой квадрат попадёт точка с такими координатами.
Post #: 12
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> [Delphi] StringGrid: центрирование символа, выделение поля







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.