|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.08.2019, 01:08 | #1 |
Регистрация: 19.08.2019
Сообщений: 7
|
Закрасить ячейку в Delphi (stringgrid)
Всем привет. Нужно закрасить ячейку с максимальным значением на диагоналях в stringgrid1. Я уже пытался закрасить нужную ячейку, но все безрезультатно. Суть проги это генерация матрицы, поиск максимального элемента и перенос этого элемента в центр второй. А закрашевание необходимо для удобства пользователя. Я приложу архив с прогой Матр.zip и сам код.
Код:
Форматируйте код и используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ Последний раз редактировалось Вадим Мошев; 19.08.2019 в 01:20. |
19.08.2019, 08:27 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Вы делаете логическую ошибку.
Не надо искать максимум в процедуре закраски. Эта процедура вызывается для каждой ячейки матрицы отдельно. Поэтому Вы десятки раз впустую гоняете циклы. а нужно сделать следующее. 1) заполнить матрицу случайными числами 2) найти максимум с помощью вашей функции findmax(matr,MaxRow,MaxCol); 3) полученные значения row и col, где находится максимальный элемент запомнить для дальнейшего использования (это можно сделать по разному. например, в вашем случае можно использовать глобальные переменные (или переменные формы) 4) в процедуре procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); если ACol, Arow совпадают с запомненными переменными, адресом максимального элемента, то закрасить ячейку. всё. p.s. можно не заводить глобальные переменные, а прямо в гриде сохранять признак того, что эта ячейка содержит максимальное значение - см. метод Objects : StringGrid1.Objects[MaxCol, MaxRow] |
19.08.2019, 12:09 | #3 | |
Регистрация: 19.08.2019
Сообщений: 7
|
Большое спасибо
Цитата:
Код:
|
|
19.08.2019, 13:02 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
НЕТ!!!!!
Вы опять повторяете одну и ту же ошибку!!! Цитата:
Код:
Последний раз редактировалось Serge_Bliznykov; 19.08.2019 в 13:06. |
|
19.08.2019, 13:46 | #5 | |
Регистрация: 19.08.2019
Сообщений: 7
|
Цитата:
Код:
Код:
|
|
19.08.2019, 13:50 | #6 |
Регистрация: 19.08.2019
Сообщений: 7
|
А если оставить так то все нормально
Код:
|
19.08.2019, 22:06 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Выложите архив с проектом.
предположу, что первый раз грид закрашивается ещё до того, как нажали кнопку заполнения. бороться с этим легко: вариант 1. добавьте событие на создание формы OnCreate и там напишите Код:
вариант 2. так измените процедуру прорисовки Код:
|
20.08.2019, 16:49 | #8 | |
Регистрация: 19.08.2019
Сообщений: 7
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не получается закрасить ячейку StringGrid с++ Builder | Mat Bourn | Помощь студентам | 13 | 16.04.2019 13:46 |
Закрасить ячейку DBGrid по нажатию на кнопку | dimok5 | C++ Builder | 3 | 24.03.2017 09:02 |
Как закрасить активную ячейку StringGrid | demiancz | Общие вопросы Delphi | 1 | 05.05.2013 16:51 |
Как закрасить в WORD ячейку не полностью | chilist | Microsoft Office Word | 3 | 24.03.2011 11:55 |
Задача StringGrid, требуется закрасить ячейку по координатам | Mir@cle | Помощь студентам | 0 | 13.12.2010 19:50 |