Topic: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

Изменение цвета ячеек компонента TableGrid, в зависимости от его содержимого.


procedure Form1_GridEmployees_OnChange (Sender: string);
var
   i,c: integer;
begin
     c := Form1.GridEmployees.RowCount - 1;
     for i := 0 to c do
     begin
         if Form1.GridEmployees.Cells[3,i] = 'Yes' then Form1.GridEmployees.Cell[3,i].Color := clRed
             else Form1.GridEmployees.Cell[3,i].Color := clGreen;
     end;
end;

begin

end.

Проект с примером:

Post's attachments

Attachment icon Color Grid.zip 5.49 kb, 725 downloads since 2015-02-20 

Dmitry.

2 (edited by LexaKlim 2015-02-22 23:18:05)

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

Приветствую!

При обоих значениях, цвет ячеек зелёный.

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

Здравствуйте,


замените строчку в скрипте

Form1.GridEmployees.Cells[3,i] = 'Yes'

на

Form1.GridEmployees.Cells[3,i] = 'Да'
Dmitry.

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

а если в этом же столбце имеется несколько значений , и каждому присвоить нужно цвет? например если "да" то зеленый а если "может быть" то голубой (claqua) ?? а если нет то так и остаётся белый ???

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

Sergey wrote:

а если в этом же столбце имеется несколько значений , и каждому присвоить нужно цвет? например если "да" то зеленый а если "может быть" то голубой (claqua) ?? а если нет то так и остаётся белый ???

procedure Form1_GridEmployees_OnChange (Sender: string);
var
   i,c: integer;
begin
     c := Form1.GridEmployees.RowCount - 1;
     for i := 0 to c do
     begin
         if Form1.GridEmployees.Cells[3,i] = 'Да' then Form1.GridEmployees.Cell[3,i].Color := clGreen
             else if Form1.GridEmployees.Cells[3,i] = 'Может быть' then Form1.GridEmployees.Cell[3,i].Color := claqua;
     end;
end;
Dmitry.

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

у меня вопрос такой  я использовал этот скрипт у себя в проекте и у меня такая проблема где слово  'Да' на проекте он показывает а слово нет просто чистая грофа  как можно тут прописать также слово только НЕТ ?????

procedure Form1_GridEmployees_OnChange (Sender: string);
var
   i,c: integer;
begin
     c := Form1.GridEmployees.RowCount - 1;
     for i := 0 to c do
     begin
         if Form1.GridEmployees.Cells[3,i] = 'Да' then Form1.GridEmployees.Cell[3,i].Color := clGreen
             else if Form1.GridEmployees.Cells[3,i] = 'Может быть' then Form1.GridEmployees.Cell[3,i].Color := claqua;
     end;
end;

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

6katran6
В данном скрипте заменить слово 'Может быть'  на  'Нет'

Dmitry.

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

http://s019.radikal.ru/i600/1608/57/e56181948000.jpg

слова нет как можно  прописать ? мне нужна что бы было ДА и НЕТ

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

6katran6 wrote:

http://s019.radikal.ru/i600/1608/57/e56181948000.jpg

слова нет как можно  прописать ? мне нужна что бы было ДА и НЕТ

Как правило прописывать это в ручную нет необходимости, при создании записи CheckBox должен быть без галочки (пустым) тогда в базу данных попадет значение Нет.

Dmitry.

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

спасибо

11 (edited by legerman 2017-03-22 17:15:42)

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

Здравствуйте!


procedure Form1_TableGrid1_OnChange (Sender: string);
 var
    i,c: integer;
begin
 c := Form1.TableGrid1.RowCount - 1;
    for i := 0 to c do
    begin           
       if StrToDate(Form1.TableGrid1.Cells[1,i]) < Now() then Form1.TableGrid1.Cell[1,i].Color := clRed;
    end;
end;

В моем случае  пишет "20.03.2017 0:28:20" is not a valid date. Эта колонка из таблицы с форматом Дата/время, в старой версии проекта с форматом Дата это работало.
Подскажите, как исправить?

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

legerman
Здравствуйте.


Вместо функции StrToDate используйте StrToDateTime

Dmitry.

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

Спасибо!

14 (edited by tefix 2019-12-02 09:36:22)

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

Здравствуйте! Помогите решить пару вопросов:
1. А как закрасить цветом не ячейку а всю строку?
2. Как сделать такое условие "если дата в ячейке меньше текущей даты, например, на 1 день, или на 7 дней"?
Предыдущие решения не подошли(

Что посоветуете почитать что б хотя б немного разбираться в скриптах в вашем продукте (На каком языке пишутся скрипты здесь и какие переменные используются для программирования)?
Заранее благодарю!

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

tefix wrote:

Здравствуйте! Помогите решить пару вопросов:
1. А как закрасить цветом не ячейку а всю строку?
2. Как сделать такое условие "если дата в ячейке меньше текущей даты, например, на 1 день, или на 7 дней"?
Предыдущие решения не подошли(

Что посоветуете почитать что б хотя б немного разбираться в скриптах в вашем продукте (На каком языке пишутся скрипты здесь и какие переменные используются для программирования)?
Заранее благодарю!

procedure FrmSotrudniki_TableGrid2_OnChange (Sender: TObject);
var
i, Ii, cR, cC,k, l: integer;
sID: string;
begin
 cR := FrmSotrudniki.TableGrid2.RowCount - 1;
 cC := FrmSotrudniki.TableGrid2.Columns.Count -1;
 FrmSotrudniki.TableGrid2.BeginUpdate;
 for i := 0 to cR do
   begin
      if (StrToDateTime(FrmSotrudniki.TableGrid2.Cells[4,i])- Date <=7)  then
        begin
          for Ii:=0 to Cc do FrmSotrudniki.TableGrid2.Cell[Ii,i].Color := $006F6FFF;
        end;
end;
end;

16 (edited by tefix 2019-12-03 12:42:48)

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

Благодарю!!! Кажется я стал немного понимать))
Будет правильно следующие условие:

if (Date - StrToDateTime(FrmSotrudniki.TableGrid2.Cells[4,i])  <= 7)  then

Тогда еще вопрос: какое условие записать чтобы строки закрашивались в зависимости от дня.
1) Например, парные числа одним цветов, непарные - другим. К сожалению не нашел функцию остаток от деления.
2) Если дата в следующей строке отличается от предыдущей строки - то менять цвет. например первые две строки 15декабря - цвет 1, следующие 5 строк 16 декабря - цвет2, потом 3строки 17 ноября - цвет1 и т.д. Что б видеть разницу по дням.

Мне не удалось реализовать ни одним из способов, решил сделать третий более легкий)) Если кто знает как решить эти - думаю они пригодятся!!!

Re: [Скрипт] Изменить цвет ячейки компонента TableGrid при условии

1. Остаток от деления есть, пример

19 mod 4
Dmitry.