0

我在(TMS)CustomCellDraw 事件中使用以下代码DBAdvGrid来增加行高。

procedure TForm1.DBAdvGrid1CustomCellDraw(Sender: TObject; Canvas: TCanvas;
  ACol, ARow: Integer; AState: TGridDrawState; ARect: TRect; Printing: Boolean);
begin
DBAdvGrid1.RowHeights[ARow]:=120;
end;

如何使其避免增加第 0 行,这是网格中的第一行,包含列名/标题?- 我希望该行保持不变,而所有其他行都应通过上述代码调整大小。基本上它应该忽略行索引 0 并从行索引 1 开始

4

1 回答 1

1

它会是这样的:

procedure TForm1.DBAdvGrid1CustomCellDraw(Sender: TObject; Canvas: TCanvas; 
  ACol, ARow: Integer; AState: TGridDrawState; ARect: TRect; Printing: Boolean);
begin
  if ARow > 0 then
    DBAdvGrid1.RowHeights[ARow] := 120;
end;

但不要从绘图事件修改行高。此类事件被频繁触发,仅用于内容绘制,不用于调整内容大小。更糟糕的是,如果您例如允许行大小调整并且用户会尝试设置行高,那么它将反过来触发您将高度更改回来的事件,因此您将与用户发生争执。

内容大小应该提前完成,如本示例OnCustomCellSize事件中所示。

但是为了您的目标,我认为无需额外代码即可设置DefaultRowHeightFixedRowHeight属性。

于 2017-09-11T06:01:43.400 回答