Delphi2007...
Ik gebruik een afgeleide van AdvGid in mijn programma. Daarin vul ik een gegeven (reghelnummer) en zet de kleur voor die regel:
(r is gridregel, begint bij 0 (de headrerregel). oneven regels bevat een specificatie van wat de volgende regel bevat (vaste waarden) en de even regels gegevens uit een bestand; In die regels is kolom gevuld met regelnummer:
Code:
for i := 1 to maxvelden do
begin
grid.Cells[i, 0] := format ('-%d-', [i]); // Kolomnummer
grid.ColWidths[i] := 20 * grid.Font.Size; // kolombreedte in aantal pixels om ruimte te maken.
end;
// Data begint op regel 1, kolom 0 wordt ook ingevuld.
r := 1;
for i := 0 to DataLijst.Count - 1 do
begin
// Oneven regels: header
grid.RowColor[r] := clMoneyGreen;
grid.RowHeights[r] := 2 * grid.RowHeights[r] ; // kop twee hoog - dan past merendeel van de naam
// Even regel: data
grid.RowColor[r+1] := clWindow;
grid.Cells[0, r+1] := format ('%d', [i+1]); // Regelnummer, 1 hoger dan index
en daarna vul ik de rest van de cellen, en geef die een kleur als dat nodig is:
Code:
DataRegel := Datalijst.Items[i];
for j := 0 to Maxvelden-1 do
if DataRegel.veldnaam[j] <> '' then
begin
// veldnamen op oneven regels. data op de volgende
grid.Cells[j+1, r] := Dataregel.veldnaam[j];
grid.Cells[j+1, r+1] := dataregel.Recorddata[j];
// Fout gevonden - markeer
if DataRegel.DataVerschil[j] then
grid.Colors[j+1, r+1] := clred;
end;
Dat werkt prima. maar de dataregels zijn veel breder dan het scherm, dus vallen ze niet op.
Daarom wil in kolom 0 (waarin de regelnummer is ingevuld) een kkleur geven zodat in één opslag te zien is dat een regel een 'fout' waarde bevat. Dus in de loop voor vullen van de regel toevoegen, als dataregel
Code:
if DataRegel.BevatFout then
grid.colors[0, r+1] := clred;
maar dat blijkt niet te werken: de cel blijft op de standaard kleur.
Hoe krijg ik dat voor elkaar?
Bookmarks