Witam,
mam problem z zmianą koloru tła wybranych rekordów w DBGridzie.
Mam w DbGrid2 Tabelę wyświetlającą id_sprzeru oraz nazwę_sprzętu.
Połączona ona jest z główną tabelą, która jest wyświetlana w DBGrid1
W FormCreate przeszukuje tabele podrzędną(tą z DBGrid2) w celu sprawdzenia które sprzęty nie posiadają żadnego rekordu w Tabeli głównej.
W DBGrid2 chce zaznaczyć na zielono rekordy bez żadnej wartości.
procedure Tslownik_podczas_pracy.FormCreate(Sender: TObject);
var wartosc:integer;
OutRect: TRect;
I: Integer;
begin
// Przechodzi po wszystkich rekordach w DBGrid2 sprawdzając, który nie ma żadnej wartości.
DBGrid2.DataSource.DataSet.first;
while not(DBGrid2.DataSource.DataSet.Eof) do
begin
DBGrid2.SelectedRows.CurrentRowSelected := True;
wartosc:=DBGrid2.Columns[0].Field.Value; // numer rekordu
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select B."Numer", B."KARTA" FROM "Czyny" B, "Obiekt" F WHERE B."ID_Ob"= F."ID_Ob" AND B."ID_OBI"= ' + inttostr(wartosc));
IBQuery1.Open;
if( (DBGrid1.DataSource.DataSet.Fields[0].IsNull) AND (DBGrid1.DataSource.DataSet.Fields[1].IsNull) ) THEN
begin
DBgrid2.DefaultDrawColumnCell(OutRect, wartosc, DBGrid2.Columns[0], []) ; //Tutaj nieskutecznie próbuje wywołać procedurę
// która pomaluję tła rekordów bez wartości
end;
DBGrid2.SelectedRows.CurrentRowSelected := False;
DBGrid2.DataSource.DataSet.next;
end;
DBGrid2.DataSource.DataSet.first;
end;
// TUTAJ PROCEDURA
procedure Tslownik_podczas_pracy.DBGrid2DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
begin
DBGrid2.Canvas.Brush.Color := clgreen;
grid.DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
end;
Niestety maluję mi wszystkie rekordy i wiem że to coś z tą procedurą, ale próbowałem na różne sposoby i nic.
Proszę o pomoc.