Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
Delphi 10.4 Sydney
|
AW: DBGrid - Option dgRowSelect vs dgEditing
4. Jun 2021, 12:13
Hallo Roland,
Du kannst die Zeilen im DbGrid mit OnDrawDataCell beeinflussen - auch nach dem Inhalt eines Feldes - und das funktioniert auch beim Bewegen des Mauszeiges:
Delphi-Quellcode:
procedure TfrmMain.dbgKSuchDrawDataCell(Sender: TObject; const [Ref] Rect: TRect; Field: TField; State: TGridDrawState);
{-------------------------------------------------------------------------------
bei einem Grid die Zeilen in Abhängigkeit eines
Feldwertes farbig machen
-------------------------------------------------------------------------------}
var
clNew : TColor;
clOld : TColor;
begin
// alte Farbe merken
clOld := TDBGrid(Sender).Canvas.Brush.Color;
// neue Farbe in Abhängikeit des Wertes einstellen
if qryKSuch.FieldByName('BEZ').AsString = '*** fehlt in Parametertabelle ***' then begin
clNew := clRed;
end
else begin
if qryKSuch.FieldByName('ART').AsString = 'Parameter 1' then begin
clNew := clGreen;
end
else begin
if qryKSuch.FieldByName('ART').AsString = 'Parameter 2' then begin
clNew := clBlue;
end
else begin
clNew := clOld;
end;
end;
end;
// aktive Zeile anders zeichen
with (Sender as TDBGrid) do begin
if (gdSelected in State) then begin
Canvas.Brush.Color :=clSkyBlue; // Cursor-Farbe
Canvas.Brush.Style :=bsSolid;
Canvas.Pen.Style :=psclear;
Canvas.FillRect(Rect);
end
else begin
Canvas.Brush.Color :=clNew;
Canvas.Brush.Style :=bsSolid;
Canvas.Pen.Style :=psclear;
Canvas.FillRect(Rect);
end;
end;
//Text (muss separat gezeichnet werden)
TDBGrid(Sender).Canvas.Pen.Style :=psSolid;
TDBGrid(Sender).Canvas.Pen.Color :=clBlack;
TDBGrid(Sender).Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+2,Field.AsString);
End;
Rolf wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
|