Topic: цветовая заливка записей в гриде
Подскажите, а как сделать заливку цветом определенных записей в гриде. Не могу никак найти на форуме пример, кажется где=то уже было.
My Visual Database → Russian → цветовая заливка записей в гриде
Подскажите, а как сделать заливку цветом определенных записей в гриде. Не могу никак найти на форуме пример, кажется где=то уже было.
У меня, если год в ячейке меньше или равен текущему, скрипт такой:
procedure frmChoice_TableGrid2_OnChange (Sender: string);
var
i,c: integer;
sYear: string;
YY, MM, DD: word;
begin
c := frmChoice.TableGrid2.RowCount - 1;
for i := 0 to c do
begin
sYear := frmChoice.TableGrid2.Cells[14,i];
if ValidInt(sYear) then
begin
DecodeDate(now, YY, MM, DD);
if StrToInt(sYear) <= YY then frmChoice.TableGrid2.Cell[14,i].Color := clRed;
end;
end;
end;
У меня так реализовано
procedure Form1_TableGrid1_OnChange (Sender: string);
var
i,c: integer;
begin
c := Form1.TableGrid1.RowCount-1; // получаем количество строк в гриде
for i := 0 to c do // цикл перебора всех строк
begin
// красим ячейку в зависимости от текста в ней, в колонках
if Form1.TableGrid1.Cells[8,i] = 'Принято' then Form1.TableGrid1.Cell[8,i].Color := clYellow;
if Form1.TableGrid1.Cells[8,i] = 'Ремонтируется' then Form1.TableGrid1.Cell[8,i].Color := clAqua;
if Form1.TableGrid1.Cells[8,i] = 'Готов' then Form1.TableGrid1.Cell[8,i].Color := clLime;
if Form1.TableGrid1.Cells[8,i] = 'На диагностике' then Form1.TableGrid1.Cell[8,i].Color := clSilver;
if Form1.TableGrid1.Cells[8,i] = 'Без ремонта' then Form1.TableGrid1.Cell[8,i].Color := clRed;
if Form1.TableGrid1.Cells[8,i] = 'Согласовать' then Form1.TableGrid1.Cell[8,i].Color := clSkyBlue;
if Form1.TableGrid1.Cells[8,i] = 'Поиск зип' then Form1.TableGrid1.Cell[8,i].Color := cl3DLight;
if Form1.TableGrid1.Cells[8,i] = 'Ожидает запчасти' then Form1.TableGrid1.Cell[8,i].Color := clFuchsia;
if Form1.TableGrid1.Cells[9,i] = 'Нет' then Form1.TableGrid1.Cell[9,i].Color := clInactiveCaption;
if Form1.TableGrid1.Cells[9,i] = 'Да' then Form1.TableGrid1.Cell[9,i].Color := clLime;
if Form1.TableGrid1.Cells[10,i] = 'Нет' then Form1.TableGrid1.Cell[10,i].Color := clInactiveCaption;
if Form1.TableGrid1.Cells[10,i] = 'Да' then Form1.TableGrid1.Cell[10,i].Color := clLime;
end;
end;
благодарю ребята! Ща поковыряю.
Подскажите пожалуйста скрипт, подсвечивания ячейки цветом в грид (ячейчка формата - дата), если сегодняшняя (текущая) дата больше указанной в ячейке на 30 дней? Заранее благодарю!
koydaika
procedure Form1_GridSearch_OnChange (Sender: string);
var
i, c: integer;
sDate: string;
Date: TDate;
begin
c := Form1.GridSearch.RowCount - 1;
for i := 0 to c do
begin
sDate := Form1.GridSearch.Cells[3,i];
if ValidDate(sDate) then
begin
Date := StrToDate(sDate);
if Now > (Date+30) then Form1.GridSearch.Cell[3,i].Color := clRed;
end;
end;
end;
если не получится встроить, пришлите свой проект на support@drive-software.com
постараюсь помочь.
koydaika
procedure Form1_GridSearch_OnChange (Sender: string); var i, c: integer; sDate: string; Date: TDate; begin c := Form1.GridSearch.RowCount - 1; for i := 0 to c do begin sDate := Form1.GridSearch.Cells[3,i]; if ValidDate(sDate) then begin Date := StrToDate(sDate); if Now > (Date+30) then Form1.GridSearch.Cell[3,i].Color := clRed; end; end; end;
если не получится встроить, пришлите свой проект на support@drive-software.com
постараюсь помочь.
Спасибо огромное! Все получилось!
А можно ли добавить условие ещё, если помимо даты +30 дней, добавить условие, что в другой ячейке определенная надпись, и только при выполнении обоих условий была подсветка?
Можно, необходимо изменить эту строку кода
if Now > (Date+30) then Form1.GridSearch.Cell[3,i].Color := clRed;
на
if (Form1.GridSearch.Cells[2,i] = 'надпись') and (Now > (Date+30)) then Form1.GridSearch.Cell[3,i].Color := clRed;
Можно, необходимо изменить эту строку кода
if Now > (Date+30) then Form1.GridSearch.Cell[3,i].Color := clRed;
на
if (Form1.GridSearch.Cells[2,i] = 'надпись') and (Now > (Date+30)) then Form1.GridSearch.Cell[3,i].Color := clRed;
Все получилось! Огромное тебе спасибо! Очень выручил!
подскажите, пожалуйста, у меня такой вопрос - почему когда в грид выводятся записи полученные через SQL-запрос, то подсветка заданных ранее в скрипте ячеек пропадает. Т.е. при обычном поиске через кнопку с заданным действием "поиск" все гуд, скрипт исполняется на событии onchange грида и записи раскрашиваются в цвета. А когда в грид выводятся данные с помощью кнопки через SQL запрос и данные в гриде тоже меняются - то цвет записей в гриде пропадает? Может я не на то действие скрипт поставил? Или скрипт на грид не исполняется при SQL-запросе?
motorolla
Должно работать и при SQL запросе.
Пришлите пожалуйста ваш проект на support@drive-software.com
посмотрю в чем дело.
благодарю, разобрался, оказалось столбцы съехали при SQL-запрсе и проверка не потому номеру столбца велась.
My Visual Database → Russian → цветовая заливка записей в гриде
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi