Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/35: Рейтинг темы: голосов - 35, средняя оценка - 4.89
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663

Подсветка TStringGrid по набору условий

07.01.2015, 17:00. Показов 7863. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Вопрос про StringGrid.
Есть StringGrid, есть информация, которая по тому или иному событию записывается в строку этого StringGrid.
События разные (скажем 4 вида) Вообщем то одно из этих событий реализовано. Но хотелось бы при этом событие окрашивать всю строку в нужный цвет(красный например). А лучше, чтобы плюс например еще рамка была. Но не критично.
Добился окрашивания только одной ячейки.
Обработчик DrawCell

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
          TRect &Rect, TGridDrawState State)
{
     AnsiString Strr;
             Strr= StringGrid1->Cells[ACol][ARow];
         if(Form1->ALARM_Red)
    {
        if(
         ((strstr(Strr.c_str(), "ALARM" ))!=0)||
         ((strstr(Strr.c_str(), "ТРЕВ"))!=0)
        )
        {
                  Strr= StringGrid1->Cells[ACol][ARow];
                  StringGrid1->Canvas->Brush->Color = clCream   ;// clWhite;
                  StringGrid1->Canvas->Font->Color  = clRed;// clBlack;
 
              StringGrid1->Canvas->FillRect(Rect);
              StringGrid1->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Strr);
        }
    }
}
Возможно ли решение этой проблемы? Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.01.2015, 17:00
Ответы с готовыми решениями:

Открытие картинки по набору условий из StringGrid
Добрый день! Есть код:AnsiString Strr,Strr1; Strr= StringGrid1->Cells; Strr1= StringGrid1->Cells; if( ((strstr(Strr.c_str(),...

Удаление строк по набору условий
Доброго дня.... Как с помощью VBA удалить строки из таблицы XLS по условию: (столбец А = 10 и столбец B = 20 и столбец W = 30) ...

Существуют ли множества, удовлетворяющие набору условий? 2
1.2Существуют множества А В Х такие что выполняется набор условий ? P\N=N∩P=∅ P∩E≠∅

47
17.01.2015, 16:49
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от Sergey_03 Посмотреть сообщение
Все! Я полностью разобрался с этой проблемой. Всем огромное спасибо!
Неожиданно ...

0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
21.03.2015, 21:44  [ТС]
Друзья, сижу, голову ломаю, а возможно ли увеличить размер шрифта только в одном из столбцов грида? Например в 9-ом. Спасибо!
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.03.2015, 21:51
При ручной отрисовке грида - все можно. Когда рисуем любую ячейку целевого столбца, меняем размер шрифта в свойстве Font канвы, а по завершении отрисовки данной ячейки меняем обратно.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
22.03.2015, 10:57  [ТС]
В DrawCell пишу такое:
C++
1
2
3
4
5
6
7
8
     TStringGrid *grid = static_cast<TStringGrid*>(Sender);   
     String s = grid->Cells[ACol][ARow];
     if( grid->Col == 9)
         {
                       grid->Canvas->Font->Size  =  14;
                       grid->Canvas->FillRect(Rect);
                       grid->Canvas->TextRect(Rect, Rect.Left, Rect.Top, s);
         }
Шрифт увеличивается только при клике на ячейку в 9 столбце. Что не так, подскажите..

Добавлено через 28 минут
Вот так все получилось:
C++
1
2
3
4
5
6
if  (ACol == 9)
        {
            StringGrid1->Canvas->FillRect( Rect );
            StringGrid1->Canvas->Font->Size = 14;
            StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, StringGrid1->Cells[ACol][ARow]);
        }
Спасибо.

Добавлено через 11 часов 42 минуты
Доброго утра. Не подскажите, по какой причине все это (покраска и изменение шрифта) не работает с компонентом JvgStringGrid библиотеки JVCL ָ?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
22.03.2015, 11:58
Цитата Сообщение от Sergey_03 Посмотреть сообщение
Не подскажите, по какой причине все это (покраска и изменение шрифта) не работает с компонентом JvgStringGrid библиотеки JVCL ָ?
Оно, вроде как, наследуется от стандартного грида, но там многое перелопачено.
Delphi
1
TJvExStringGrid = class(TStringGrid, IJvExControl)
В любом случае - это тема не относится к подсветке TStringGrid...
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
22.03.2015, 14:25  [ТС]
В общем собрал все в кучу, может кому пригодится. Все работает. В DrawCell
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//------------------------------------------------------------------------------
//-----------------------------------раскраска строк----------------------------
  TStringGrid *grid = static_cast<TStringGrid*>(Sender);
  String s = grid->Cells[ACol][ARow];
  if(grid->Objects[0][ARow])
    {
        TColor color0 = reinterpret_cast<TColor>(grid->Objects[0][ARow]);
        grid->Canvas->Brush->Color = color0;
        grid->Canvas->FillRect(Rect);
        grid->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2,s);
    }
  if(grid->Objects[1][ARow])
    {
        TColor color1 = reinterpret_cast<TColor>(grid->Objects[1][ARow]);
        grid->Canvas->Font->Color  = color1;
        grid->Canvas->FillRect(Rect);
        grid->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2, s);
    }
//------------------------------------------------------------------------------
//-----------------------------------увеличение шрифта в 9 столбце--------------
  if  (ACol == 9)
    {
        grid->Canvas->FillRect( Rect );
        grid->Canvas->Font->Size = 14;
        grid->Canvas->TextOut(Rect.Left, Rect.Top, grid->Cells[ACol][ARow]);
    }
//------------------------------------------------------------------------------
//-----------------------------------центровка текста в ячейках-----------------
  int x, y;
  x = Rect.Left + (Rect.Width() -
  grid->Canvas->TextWidth(grid->Cells[ACol][ARow]))/2;
  y = Rect.Top + (Rect.Height() -
  grid->Canvas->TextHeight(grid->Cells[ACol][ARow]))/2;
  if(ACol >= 0 && ARow >= 0)
    {
        grid->Canvas->FillRect(Rect);
        grid->Canvas->TextOut(x,y,grid->Cells[ACol][ARow]);
    }
Если не в тему - удалите. Спасибо!
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
01.04.2015, 08:28  [ТС]
Доброго дня! Вопросик есть При перерисовке цвета фона строки грида появляется ступенька на границе перерисованных ячеек. Я сначала крашу всю строку желтым, потом девятый столбец серым. Все хорошо, если бы не эта ступенька. При фокусе на самой правой желтой ячейке в строке, ступенька пропадает. Может можно как то избавиться от этой ступеньки?
Миниатюры
Подсветка TStringGrid по набору условий  
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
01.04.2015, 09:10  [ТС]
Вопрос закрыт. Проблема была в последовательности перерисовок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2015, 09:10

почему на виндоус икспи на нетбуке асер д255е экран тусклый(подсветка),а на виндоус 7 подсветка замечательная(очень яркая)
почему на виндоус икспи на нетбуке асер д255е экран тусклый(подсветка),а на виндоус 7 подсветка замечательная(очень яркая),что мне сделать...

Подсветка строк содержащих одинаковые значения полей или подсветка полей с одинаковым значением в таблице
Подскажите, возможна ли реализация в форме такой функции: При наведении курсора на поле высвечиваются по всей таблице поля имеющие такое же...

"Мало начальных условий" при решении системы из 7 ДУ, хотя граничных условий 8
Имеется такая система, http://regfoto.ru/images/172Mathcad_2_.jpg маткад пишет что граничных условий недостаточно, хотя их там с...

Отчет по набору прав
Кто знает можно ли как-то вывести в отчет в цикле наборы прав так как они заданы в конфигураторе, тоесть: 1-Набор прав 2----Объект ...

Сплайн по набору точек
Здравствуйте Дан набор точек (пара значение + время), требуется прибить как можно большее их кол-во заменив сплайном на выбор -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru