TDBGRIDEH如何固定行焦点不随滚动条移动
时间: 2023-07-07 20:37:21 浏览: 47
可以通过设置 TDBGrid 的 Options 属性来实现固定行焦点不随滚动条移动。
具体来说,需要将 Options 属性中的 dgRowSelect 和 dgAlwaysShowSelection 两个选项都设置为 True。然后再在 TDBGrid 组件的 OnDrawColumnCell 事件中,判断当前绘制的单元格是否是固定行(可以通过 Row 属性来判断),如果是,则将选中状态强制设为 True,这样就可以保证固定行焦点不随滚动条移动。
代码示例:
```
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Sender as TDBGrid).DataSource.DataSet.RecNo = (Sender as TDBGrid).Row then
begin
(Sender as TDBGrid).Canvas.Brush.Color := clHighlight;
(Sender as TDBGrid).Canvas.Font.Color := clHighlightText;
(Sender as TDBGrid).Canvas.Font.Style := [fsBold];
(Sender as TDBGrid).Canvas.FillRect(Rect);
(Sender as TDBGrid).Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Column.Field.Text);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGrid1.Options := DBGrid1.Options + [dgRowSelect, dgAlwaysShowSelection];
end;
```