Here is an example from my program:
procedure frmMain_tgOrders_OnChange (Sender: TObject);
CONST
DATE_ORD = 5; DATE_PO = 7; DATE_REQ = 8; ORD_QTY = 9; ORDER_REC = 10; DUE = 11;
var
row, column, rowcnt, colcnt: integer;
begin
rowcnt := frmMain.tgOrders.RowCount -1;
colcnt := frmMain.tgOrders.Columns.Count -1;
frmMain.tgOrders.BeginUpdate;
for row := 0 to rowcnt do
begin
if frmMain.tgOrders.Cells[DUE,row] = '0' then //Complete order received colour red/pink
begin
for column := 0 to colcnt do
begin
frmMain.tgOrders.Cell[column,row].Color := $00BDA8FD;
end;
end
else
{Part order received colour Blue}
if (frmMain.tgOrders.Cells[DUE,row] < frmMain.tgOrders.Cells[ORD_QTY,row]) then //Complete order received
begin
for column := 0 to colcnt do
begin //light blue
frmMain.tgOrders.Cell[column,row].Color :=$00FFFFA8; // interesting brown $0065AACD;
end;
end
else
{Quote pending colour green}
if (frmMain.tgOrders.Cells[DATE_REQ,row] <> '') AND (frmMain.tgOrders.Cells[DATE_PO,row] ='') then
begin
for column := 0 to colcnt do
begin //light green
frmMain.tgOrders.Cell[column,row].Color := $00B4F2B6;
end;
end
else
{To be ordered colour yellow}
if ((frmMain.tgOrders.Cells[DATE_ORD,row] = '')AND (frmMain.tgOrders.Cells[DATE_PO,row] ='') AND (frmMain.tgOrders.Cells[DATE_REQ,row]= '')) then
begin
for column := 0 to colcnt do
begin //light yellow
frmMain.tgOrders.Cell[column,row].Color := $0080FFFF;
end;
end;
end;
frmMain.tgOrders.EndUpdate;
end;
On a clear disk you can seek forever