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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2012, 16:39   #1
miklets
 
Регистрация: 27.03.2012
Сообщений: 4
По умолчанию StringGrid

Здравствуйте. Подскажите, пожалуйста, новичку каким образом можно изменить цвет шрифта в отдельно взятой ячейке StringGrid. Заранее спасибо.
miklets вне форума Ответить с цитированием
Старый 27.03.2012, 19:08   #2
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Код:
StringGrid1->Canvas->Font->Color = clRed;
StringGrid1->Canvas->FillRect(Rect);
StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[aCol] 
[ARow]);
Как-то так

Последний раз редактировалось Drugnir; 27.03.2012 в 19:11.
Drugnir вне форума Ответить с цитированием
Старый 27.03.2012, 21:10   #3
miklets
 
Регистрация: 27.03.2012
Сообщений: 4
По умолчанию

Большое спасибо.
miklets вне форума Ответить с цитированием
Старый 17.04.2012, 13:06   #4
miklets
 
Регистрация: 27.03.2012
Сообщений: 4
По умолчанию

Добрый день. Подскажите, пожалуйста, как должна выглядеть функция принимающая в качестве параметров имя таблицы, номер столбца, номер строки, цвет и перекрашивающая в заданной таблице заданную ячейку в нужный цвет. Спасибо
miklets вне форума Ответить с цитированием
Старый 17.04.2012, 13:27   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Создай обработчик OnDarwCell и увидишь.
Цитата:
перекрашивающая в заданной таблице заданную ячейку в нужный цвет
Надеюсь ты осознаешь что перекраска твоя коту под хвост пойдет после очередного сообщения от винды приложению с командой перерисоваться?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2012, 13:36   #6
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

делал так, помечал нужную ячейку
Код:
StringGrid1->Objects[x][y]=(TObject*)1;
и во время прорисовки OnDrawCell

Код:
if(StringGrid1->Objects[ACol][ARow] == (TObject*)1)
{
    StringGrid1->Canvas->Brush->Color = clRed;
    StringGrid1->Canvas->Font->Color = clYellow;
    StringGrid1->Canvas->FillRect(Rect);
    StringGrid1->Canvas->TextOut(Rect.Left+2,Rect.Top+2,StringGrid1->Cells[ACol][ARow]);
}
microbit вне форума Ответить с цитированием
Старый 17.04.2012, 13:39   #7
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Установите свойство DefaultDrawing в false, а затем в обработчик события OnDrawCell добавьте следующий код:
Код:
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, 
     int Col, int Row, TRect &Rect, TGridDrawState State) 
 { 
      // Если это заголовок
      if (State.Contains(gdFixed)) 
      { 
          StringGrid1->Canvas->Brush->Color = clBtnFace; 
          StringGrid1->Canvas->Font->Color = clWindowText; 
          StringGrid1->Canvas->FillRect(Rect); 
          Frame3D(StringGrid1->Canvas, Rect, 
                  clBtnHighlight, clBtnShadow, 1); 
      }

      // если ячейка выделена
      else if (State.Contains(gdSelected)) 
      { 
          StringGrid1->Canvas->Brush->Color = clHighlight; 
          StringGrid1->Canvas->Font->Color = clHighlightText; 
          StringGrid1->Canvas->FillRect(Rect); 
      }

      // закрашиваем ячейку (2, 2)
      else if (Col == 2 && Row == 2) 
      { 
          StringGrid1->Canvas->Brush->Color = clBlue; 
          StringGrid1->Canvas->Font->Color = clRed; 
          StringGrid1->Canvas->FillRect(Rect); 
      }

      // Для всех остальных ячеек
      else 
      { 
          StringGrid1->Canvas->Brush->Color = StringGrid1->Color; 
          StringGrid1->Canvas->Font->Color = StringGrid1->Font->Color; 
          StringGrid1->Canvas->FillRect(Rect); 
      }

      AnsiString text = StringGrid1->Cells[Col][Row]; 
      StringGrid1->Canvas->TextRect(Rect, Rect.Left, Rect.Top, text); 
 }
Drugnir вне форума Ответить с цитированием
Старый 17.04.2012, 13:46   #8
miklets
 
Регистрация: 27.03.2012
Сообщений: 4
По умолчанию

всем огромное спасибо.
miklets вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid gnetov91 Помощь студентам 9 24.09.2011 18:55
StringGrid Aleksandr69 Общие вопросы Delphi 2 12.07.2011 23:19
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
stringgrid Vitaliy3009 Общие вопросы Delphi 3 14.10.2009 16:59
StringGrid stp56 Общие вопросы Delphi 4 27.07.2009 20:44