我正在尝试以编程方式突出显示TDBGrid后代中的当前单元格。如果我执行DBGrid.SetFocus,我会得到下面的组合框箭头,这对我来说没有充分突出显示。
编辑:
我已经在做DBGrid.SelectedField:= DataSource.FieldByName('Name');
为了让用户更多地关注相关区域,我设置了:
DBGrid.Columns[x].Title.Font.Style := [fsbold, fsunderline];
我设置了一个计时器,在五秒钟之后:
DBGrid.Columns[x].Title.Font.Style := [];
奇怪的是,在时间结束后,细胞变成蓝色(如下所示。)这是我想要的亮点。但我对网格不太了解知道如何直接得到它。
我的问题:如何在下面的蓝色示例中突出显示网格单元格?我之前从未做过这样的事情,所以我有点失落。这是一个InPlaceEditor函数吗?
我正在使用TDBGrid的后代,所以我不确定我所看到的行为是否是TDBGrid固有的,或者仅仅是后代(在这种情况下我知道我的问题在这里无法解答)。 )
答案 0 :(得分:4)
我一直在使用DBGrid: OnDrawColumnCell
事件使用以下内容(D2007)。
procedure TForm1.DBGridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
//Make the column blue if the title is bold
if (fsBold in Column.Title.Font.Style) then
TDBGrid(Sender).Canvas.Brush.Color := $00fff0e1;
//Set the selected row to white/bold text on blue background
if (gdSelected in State) then
begin
TDBGrid(Sender).Canvas.Brush.Color := clHighlight;
TDBGrid(Sender).Canvas.Font.Style := Font.Style + [fsBold];
TDBGrid(Sender).Canvas.Font.Color := clHighlightText;
end;
//Update the grid
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;