当用户选择我的网格的标题时,我想加粗网格的列标题。
我使用以下代码来实现这一点:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var I: Integer;
begin
//Prevent multiple clicks!
if fsBold in Column.Title.Font.Style then
Exit;
for I:= 0 to Column.Collection.Count-1 do
(Column.Collection.Items[I] as TColumn)
.Title.Font.Style := [];
Column.Title.Font.Style := [fsBold];
end;
这段代码工作正常。
在OnFormCreate
我定义了以下标题高度:
type
DBGridHack = class(TDBGrid);
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGridHack(DBGrid1).RowHeights[0] := 45;
end;
当我单击标题时,程序InternalLayout.MeasureTitleHeights
会将大小更改回原来的大小。因此,每次更改字体样式时,我都需要重新定义RowHeight[0]
.
代码如下所示:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var I: Integer;
begin
//Prevent multiple clicks!
if fsBold in Column.Title.Font.Style then
Exit;
for I:= 0 to Column.Collection.Count-1 do
(Column.Collection.Items[I] as TColumn)
.Title.Font.Style := [];
Column.Title.Font.Style := [fsBold];
//Every time!!
DBGridHack(DBGrid1).RowHeights[0] := 45;
end;
当用户重新定义 Column 的宽度时,还有另一个问题,在这种情况下,它RowHeight[0]
也会返回到原始值。我想解决这个问题的唯一方法是继承 DBGrid 和 override ColWidthsChanged
,但是我还要重写多少方法?
为什么会发生这种情况?
这是一个错误,还是我的代码有问题?
有没有办法解决这个问题?
在一个简单的问题中。
如何修复DBGrid 标题高度的值?