Вопрос № 23232: Господа, у меня такой вопрос: есть StringGrid, размером ~59х59 (без FixedCols без FixedRows), во все ячейки StringGridа генерируются, по Timerу (интервал 0,5 с) случайные числа (от 1 до 100). Все это работает, т.е. каждые 0,5с числа генерируются и им...
Вопрос № 23.232
Господа, у меня такой вопрос: есть StringGrid, размером ~59х59 (без FixedCols без FixedRows), во все ячейки StringGridа генерируются, по Timerу (интервал 0,5 с) случайные числа (от 1 до 100). Все это работает, т.е. каждые 0,5с числа генерируются и ими заполняется StringGrid. Проблема вот в чем:
Как мне сделать так, чтобы после того, как числа сгенерированы в StringGrid, производилась проверка каждого числа на четность, и если число четно, то эта ячейка StringGridа становится, к примеру, красного цвета, и в эту ячейку больше ничего не генерируется, но в остальные ячейки генерирование продолжается. И так до тех пор, пока все ячейки не будут заполнены четными числами (и соответственно, все ячейки будут красным цветом).
Меня, в частности, интересует: как поймать "четную ячейку", сделать ее красной, "заморозить" ее, т.е. чтобы в нее больше ничего не генерировалось.
Жду и надеюсь на ваши советы.
Отправлен: 08.07.2005, 17:05
Вопрос задал: Arman1982 (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Jadd
Здравствуйте, Arman1982!
Первое, что пришло в голову - сделать массив сообтветствий. Т.е. массив будет содержать информацию о четных ячейках. Пусть это будет двумерный массив типа Boolean, в котором все значения будут false, а четные - true. Чем не вариант? И потом, прежде, чем вставлять значение, проверить этот самый массив. Пусть количество строк и столбцов в массиве соответствуют столбцам и колонкам StringGrid'а. Чем не решение?
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 08.07.2005, 17:33
Отвечает: Полищук Владислав Игоревич
Здравствуйте, Arman1982!
У StringGrid'a есть свойство Objects - это массив объектов, которые сопоставляются с ячейками. Там можно хранить признак четности, который, будет определятся при занесении числа в ячекйу. А дальше - где есть признак четности - рисуем красным, где - нет генерируем новое число. Красный цвет, если не ошибаюсь, можно задать путем присвоения свойству Font, нужного цвета перед выводом в ячейку ( только потом его надо опять сделать черным)
--------- Чтобы вчера не случилось, радуйся новому дню
Отвечает: Ерёмин Андрей
Здравствуйте, Arman1982!
На чётность число проверяем с помощью функции Odd(). Чтобы рисовать ячейку другим цветом, используем событие OnDrawCell у TStringGrid. В приложении исходный код основного модуля проекта. Проверено: работает :) Удачи!
Приложение:
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 08.07.2005, 18:57
Отвечает: Denisss
Здравствуйте, Arman1982!
В приложении указан приблизительный пример того, как это можно реализовать...
Начало происходит по нажатию на кропку Button3, при этом, чтобы не было случайного повторного нажатия, она отключается сразу после ее нажатия и включается после заполнения всего грида.
В принципе, в приложении есть несколько недоработок (ну, например, вдруг у пользователя цвет окна красный или цвет текста такой, что на красном его сложно различить, тогда уж придется переписывать код), но я сделал основу, остальное за Вами...
Приложение:
Ответ отправил: Denisss (статус: 9-ый класс)
Отправлен: 08.07.2005, 19:03