Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: StringGrid закрашиваем ячейку не полностью...т.е. не целиком или не всю!  (Прочитано 9288 раз)
0 Пользователей и 1 Гость смотрят эту тему.
АлексейВалерьевич
Гость
« : 07-05-2010 11:05 » 

Задача стоит такая: Нужно что бы в StringGrid'е появлялась таблица содержащая поля


№ п/п|    Код студента | ФИО    |  Диаграма успеваемости  | Средняя оценка|
--------|---------------------|----------|-----------------------------------|----------------------|
      1   | 1233                 |   ФИО  |  =======                         |              3.5         |
      2   | 1333                 |   ФИО  |  ==================|                 5         |
      3   | 1443                 |   ФИО  |  =============           |              4.5         |
      4   | 1255                 |   ФИО  |  ===                                  |              2            |
      5   | 1244                 |   ФИО  |  ==============         |              4.7         |


                                                        РИС.1

Дак вот Столбец "Диаграма успеваемости" должен быть закрашен в соответствии со средней оценкой, т.е. если 3.5 то закрашиваем желтым ...70 % ячеки если 5 то вся ячека закрашена зеленым, если 2 то  красным 20% ячейки закрашено...

Вопрос...Как закрасить не полностью всю ячейку, а какой-то определенный участок ячейки? (на РИС.1 закрашенный участок обозначен "=")

Может как-то вставлять туда прямоугольник или еще как....поскажите пожалуйстО...я еще только учусь!

P.S. закрашивать я уже умею....но не так как хотелось бы уметь!
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 07-05-2010 11:31 » 

Фон на то и фон, чтобы весь менялся.

Посмотри, есть ли в TStringGrid возможность вставлять картинки - с их помощью можно попытаться добиться нужного эффекта.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
АлексейВалерьевич
Гость
« Ответ #2 : 07-05-2010 11:56 » 

Ну картинки то можно вставлять я думаю, если даже объект можно вставить....только как...?
ВАРИАНТЫ..........ПРЕДЛОЖЕНИЯ ......................ПОЖЕЛАНИЯ............
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 07-05-2010 12:27 » new

Проще: документация!
Между "думаю" и "знаю" - большая разница! Вот я - "думаю", т.к. не пользуюсь этим компонентом и оно мне не надо.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
АлексейВалерьевич
Гость
« Ответ #4 : 07-05-2010 13:43 » 

Проблема решена!
..........................................
.........................................................
s:=StrToFloat(SG1.Cells[Sg1.ColCount-1,Arow]); //считываем значение оценки в соседнем столбце
if s<3 then Begin                                               //сравниваем оценку если ниже "дВА" тогда
    if s<2.3 then si:=0 else if s<2.6 then si:=51 else si:=102;   //присвоим переменной Si числовое значение
   s:=s*100+240;                                                                 / / это высчитаные координаты для столбца диаграммы (у каждого свои!)
   st:=FloatTostr(s);
   cd:=StrToInt(st);
   SG1.Canvas.FillRect(Rect);
   SG1.Canvas.Pen.Color:=clBlack;  //присвоим цвет рамки черный
   SG1.Canvas.Brush.Color := TColor(RGB(255,si,0));  //присвоим цвет заливки тут красный....чем ближе к "ДВА" тем краснее Улыбаюсь

//    SG1.Canvas.Brush.Color := TColor(RGB(si,255,0));     чем больше Si тем желтее максимум 255 Улыбаюсь  но в коде другие Si присваеваем

//    SG1.Canvas.Brush.Color := TColor(RGB(102,255,si));   чем больше Si тем зеленее максимум 255 Улыбаюсь  но в коде другие Si присваеваем



   SG1.Canvas.Rectangle(Rect.Left,Rect.Top,cd,Rect.Bottom);   //выводим прямоугольник...который является столбцом диаграммы в таблице!!
    end
else // иначе и погнали дальше!!
...............................................................
.......................
« Последнее редактирование: 07-05-2010 14:20 от АлексейВалерьевич » Записан
osminog
Гость
« Ответ #5 : 07-06-2010 03:35 » 

Проблема решена!
..........................................

.......................
хорошее и интересное решение данной проблемы! у меня тоже такое как-то желание было воплотить в одной БД!
« Последнее редактирование: 07-06-2010 12:31 от Sel » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines