Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2011, 16:55   #1
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию StringGrid покрасить ячейки

Есть СтрингГрид (матрица, заполненная целыми числами) Надо вычислить и закрасить некоторую область (ячейки). Пробовал так — не компилится.
Код:
for(int ii=0; ii<3; ii++)
                  for(int jj=0; jj<3; jj++)
                  {
                     StringGrid1->Brush->Color=clGreen;
                     StringGrid1->Canvas->FillRect(StringGrid1->CellRect(i+ii, j+jj));
                   }
Как это сделать с OnDrawCell не понял (получилось только заранее заданный индекс ячейки и т.д.)

upd: ой, С++ Билдер. Хотя разницы нет наверно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 21.06.2011 в 16:57.
Alex11223 вне форума Ответить с цитированием
Старый 21.06.2011, 17:25   #2
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

я так крашу
Код:
StringGrid1.Canvas.Brush.Color := clRed;    
StringGrid1.Canvas.FillRect (Rect);
StringGrid1.Canvas.TextRect (Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol,ARow]);
на OnDrawCell...
делфи, ну думаю суть Вы поняли...
maLoy*508 вне форума Ответить с цитированием
Старый 21.06.2011, 17:28   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Саму покраску в OnDrawCell и у меня получилось сделать. Но как это сделать если конкретный индекс или значение ячейки, которую надо покрасить не известен до вычисления? Как-то вызвать его для этой ячейки?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.06.2011, 17:29   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Как это сделать с OnDrawCell не понял (получилось только заранее заданный индекс ячейки и т.д.)
OnDrawGrid вызывается для каждой отдельной ячейки в тот момент когда windows считает что пришла пора что-то нарисовать в этой ячейке (Acol, Arow). и говорит что для рисования ячейке отведена следующая область (rect). Теперь зная индексы и место определяем как мы будем рисовать и рисуем
Цитата:
Надо вычислить и закрасить некоторую область (ячейки)
Код:
if (acol <3) and (arow <3) then как рисовать ячейку с индексами Acol и Arow
  StringGrid1.Canvas. ....
else ...
P.S. Если мы как-то поменяли данные или условия, так что надо раскрашивать по другому, то после настройки делаем
stringGrid1.Repaint; НЕ В OnDrawCell
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.06.2011 в 17:31.
evg_m вне форума Ответить с цитированием
Старый 21.06.2011, 17:46   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
OnDrawGrid
Это где такой?оО В дельфи7 посмотрел — тоже нету.
Цитата:
Теперь зная индексы
Что-то все равно не понял. Я прошел всю таблицу(матрицу), нашел эту область (допустим подматрицу 3*3, в которой все элементы = 1). Соответственно узнал их индексы. И как теперь их закрасить (как задать такое условие)?)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.06.2011, 17:50   #6
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Закрасить ячейки с единицами можно так:
Код:
//Это в OnDrawCell
if StringGrid1.Cells[acol, arow]=1 then {тут закрашиваем ячейку}
  StringGrid1.Canvas. ....
else ...
StringGrid1.Cells[acol, arow] - не помню точно, как к ячейки обратиться

UPD: если ты до этого прошёл всё таблицу, то можно в массив сохранить все индексы и в OnDrawCell проверять, есть ли данная ячейка в массиве. Если да - красим, нет - ничего не делаем
TwiX вне форума Ответить с цитированием
Старый 21.06.2011, 23:14   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Цитата:
OnDrawGrid
Это где такой?оО В дельфи7 посмотрел — тоже нету.
Иммеется ввиду вот этоzzzzzz.JPG
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Stringgrid и пустые ячейки karapuz Общие вопросы Delphi 4 27.05.2011 14:39
Выделение ячейки StringGrid SwiP Компоненты Delphi 6 06.03.2011 23:00
Фиксированные ячейки в StringGrid Arkuz Общие вопросы Delphi 1 05.03.2011 23:32
ячейки в StringGrid Desha Компоненты Delphi 3 06.09.2010 20:32
Ячейки в StringGrid ImmortalAlexSan Общие вопросы Delphi 2 17.05.2010 17:41