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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2015, 19:27   #1
Mat Bourn
Форумчанин
 
Регистрация: 13.04.2015
Сообщений: 140
По умолчанию Не получается закрасить ячейку StringGrid с++ Builder

Добрый день. Не получается изменить цвет шрифта ячейки в StringGrid.
В событии OnDrawCell пишу код:

Код:
if ( StringGrid1->Cells[0][0] == "1" )
{

}
 else
{
 StringGrid1->Canvas->Font->Color = clRed;
 StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, StringGrid1->Cells[ACol][ARow]);
}
Но изменяется цвет всей строки . Как это исправить ?

Последний раз редактировалось Mat Bourn; 01.06.2015 в 19:29.
Mat Bourn вне форума Ответить с цитированием
Старый 01.06.2015, 20:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Перекинуть код из ветки else в ветку if
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2015, 20:32   #3
Mat Bourn
Форумчанин
 
Регистрация: 13.04.2015
Сообщений: 140
По умолчанию

Зачем ? Или это вы так шутите ?
Mat Bourn вне форума Ответить с цитированием
Старый 02.06.2015, 02:03   #4
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 360
По умолчанию

Нет, не шутят.
У Вас изменение цвета происходит при вызове метода OnDrawCell для всех ячеек, кроме тех у которых ячейка [0,0] равна 1.
koljsch вне форума Ответить с цитированием
Старый 02.06.2015, 02:19   #5
Mat Bourn
Форумчанин
 
Регистрация: 13.04.2015
Сообщений: 140
По умолчанию

Все равно, все красится. Еще остаются какие то пятна ? Изменять цвет шрифта всех ячеек одним цветом мне не надо. Нужно как то изменить цвет шрифта определенной ячейки ?

Последний раз редактировалось Mat Bourn; 02.06.2015 в 02:28.
Mat Bourn вне форума Ответить с цитированием
Старый 02.06.2015, 02:26   #6
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 360
По умолчанию

Попробуйте в методе OnDrawCell написать:
Код:
if(ACol==0 && ARow==0){
   StringGrid1->Canvas->Font->Color = clRed;
   StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, StringGrid1->Cells[ACol][ARow]);
}
Код не проверял, но должна закрашиваться только первая ячейка.
koljsch вне форума Ответить с цитированием
Старый 02.06.2015, 02:33   #7
Mat Bourn
Форумчанин
 
Регистрация: 13.04.2015
Сообщений: 140
По умолчанию

Да, наконец то. Целый день потерял, что бы вместо этого делать что нибудь другое. koljsch большое спасибо.
Mat Bourn вне форума Ответить с цитированием
Старый 02.06.2015, 02:37   #8
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 360
По умолчанию

Спасибо многоуважаемому Stilet, а я лишь довел его мысль до конца.
Если что - пишите, поможем.
koljsch вне форума Ответить с цитированием
Старый 02.06.2015, 02:45   #9
Mat Bourn
Форумчанин
 
Регистрация: 13.04.2015
Сообщений: 140
По умолчанию

Ну и Stilet тоже большое спасибо .
Mat Bourn вне форума Ответить с цитированием
Старый 02.06.2015, 12:20   #10
Mat Bourn
Форумчанин
 
Регистрация: 13.04.2015
Сообщений: 140
По умолчанию

Все сделал, потратив на это целый день. Цвет шрифта определенной ячейки изменяется в зависимости от условия: если ячейка == 1, то тогда изменить цвет ее шрифта на черный, если != 1 то тогда на красный !

Код:
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
 for ( a = 0; a <= dlina; a++ )
{

 if( ACol == a && ARow == 0 && StringGrid1->Cells[a][0] == "1")

{
 StringGrid1->Canvas->Font->Color = clBlack;
 StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, StringGrid1->Cells[ACol][ARow]);
}
 if( ACol == a && ARow == 0 && StringGrid1->Cells[a][0] != "1")
{
 StringGrid1->Canvas->Font->Color = clRed;
 StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, StringGrid1->Cells[ACol][ARow]);
}

}

}
Но одно но ? Появляются какие то небольшие пятна от краски. Как их убрать ?
Mat Bourn вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как закрасить активную ячейку StringGrid demiancz Общие вопросы Delphi 1 05.05.2013 16:51
Необходимо нарисовать через Canvas треугольник, чтобы закрасить его заливкой потом?(C++ Builder) Женька Good Помощь студентам 1 26.09.2012 21:32
Как закрасить в WORD ячейку не полностью chilist Microsoft Office Word 3 24.03.2011 11:55
Задача StringGrid, требуется закрасить ячейку по координатам Mir@cle Помощь студентам 0 13.12.2010 19:50
Закрасить ячейки в строках StringGrid в потоках fredwriter Общие вопросы Delphi 12 17.11.2010 19:06