![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
marwell |
![]() ![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: ![]() ![]() ![]() |
Доброго времени суток
Само задание звучит так: Дана таблица целых чисел ai, bi. Выделить цветом все совпадающие пары и максимальную из них, указать позиции. Нашел в инете как выделять цветом только отдельные ячейки, но не уверен что правильно ее применяю. Еще выдает ошибку "Project Projectl.exe raised exception class EConvertError with message'" Is not a valid integer value1. Process stopped. Use Step or Run to continue." Смысл ошибки понимаю, но не вижу в каком месте она появляется, вроде везде правильно работаю с ячейками unit Unit1; |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата если сделать так, будет неправильно? Нет...Смотри. Событие OnDrawCell происходит при перерисовке каждой клетки. То есть, когда ты рисуешь одну клетку, тебе нужно всего навсего проверить ту, которая выше или ниже нее, одинаковый ли текст они содержат: procedure TForm1.SGDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; Вот. А теперь - еще кое что: как только ты вводишь информацию в ячейку, тебе надо перекрасить таблицу: во-первых, возможно, пары одинаковых значений больше нет, а во-вторых, максимум мог измениться. Что для этого надо? Я сделал обраотчик события OnSelEditText у грида: procedure TForm1.SGSetEditText(Sender: TObject; ACol, ARow: Integer; Вот в этом же самом событии, OnSelEditText, я бы и находил максимум, индекс макс. элемента, запоминал бы его в переменной, описанной в классе формы (не надо злоупотреблять глобальными переменными, лучше работать с членами класса), а в OnDrawCell добавил бы еще одну проверку: если сейчас рисуется ячейка, индекс ACol которой совпадает с индексом максимума - то рисовать ее не белым и не красным, а, скажем, зеленым... Попробуй это реализовать сам, если что не получится - я помогу. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 3:10 |