2

我通过监视OnDrawColumnCell为列着色来自定义在 DBGrid 中绘图。当我阅读事件处理程序State时,我成功地捕获gdSelected了所选单元格中的字体并为其着色。但是当我 monitor 时gdRowSelected,它永远不存在,因此我无法判断何时选择了一行。

为什么从来不gdRowSelected申请?这是一个错误,还是故意的功能?

这是我目前的绘制方式。选择一行时,应在该行中以颜色为红色显示文本。

procedure TForm1.gItemsDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Rec: TRect;
  function C: TCanvas;
  begin
    Result:= gItems.Canvas;
  end;
begin
  //Evaluating gdSelected works fine, but not gdRowSelected
  if gdRowSelected in State then begin
    C.Font.Color:= clRed;
  end else begin
    C.Font.Color:= clWhite;
  end;
  C.Brush.Style:= bsSolid;
  C.Brush.Color:= clBlack;
  C.Pen.Style:= psClear;
  C.FillRect(Rect);
  C.Brush.Style:= bsClear;
  C.Pen.Style:= psSolid;
  Rec:= R;
  DrawText(C.Handle, PChar(Column.Field.AsString), Length(Column.Field.AsString),
    Rec, 0);
end;

该文件指出

gdRowSelected - 该行被选中。

但它从来没有在该州。


编辑

我尝试启用该选项dgRowSelect,它确实进行了更改,但它仍然只监视gdSelectedenum 而从不监视gdRowSelecteddgRowSelect启用时,整个gdSelected行中的每个单元格都处于状态。但仍然gdRowSelected从未处于该状态。

4

0 回答 0