Delphi / C 构建器 - 在TDBGrid中设置活动 /选择的行颜色
Delphi / C++ Builder - Set active/selected row color in TDBGrid
我想在tdbgrid控件中设置活动/选择行的背景颜色。
使用OnDrawColumnCell事件:
1(如果DBGrid具有DGMultiselect,则以下代码将工作,如果没有,则不会发生:
if ( grid->SelectedRows->CurrentRowSelected ) {
grid->Canvas->Brush->Color = clBlue;
}
2(如果DBGRID具有选项dgrowselect(如果不是(,则只有选定的单元格(而不是整个行(将被彩色:
if ( State.Contains(gdSelected) ) {
grid->Canvas->Brush->Color = clBlue;
}
如何不使用dgrowselect或dgmultiselect?
来自OnDrawColumnCell:
OnDrawColumnCell活动处理程序可以致电DefaultDrawColumnCell 指示数据感知网格以在 单元格。
使用DefaultDrawColumnCell类似。这是Delphi代码,但您可以轻松转换。
procedure TForm1.DBGridDrawColumnCell(Sender: TObject;const Rect: TRect;
DataCol: Integer; Column: TColumnEh;State: TGridDrawState);
begin
.....
DBGrid.Canvas.Brush.Color := clBlue;
DBGrid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
....
update
如何绘制DBGRID活动行,而不设置Dgrowselect或DGMultiselect。
- 我们需要获得当前行的最高位置。
定义一个继承TDBGrid的类,以使CellRect,Col和Row公开:
type
TMyDBGrid = class(TDBGrid)
public
function CellRect(ACol, ARow: Longint): TRect;
property Col;
property Row;
end;
function TMyDBGrid.CellRect(ACol, ARow: Longint): TRect;
begin
Result := inherited CellRect(ACol, ARow);
end;
现在,我们可以在OnDrawColumnCell事件中检查当前单元格的顶部:
procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var Col,Row : Integer;
begin
col := TMyDbGrid(DBGrid1).Col;
row := TMyDbGrid(DBGrid1).Row;
if (Rect.Top = TMyDBGrid(DBGrid1).CellRect(Col,Row).Top) and
(not (gdFocused in State) or not Focused) then
DBGrid1.Canvas.Brush.Color := clBlue;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- 如何在QT中为QInputDialog输入密码时设置背景非活动和灰色?
- Delphi / C 构建器 - 在TDBGrid中设置活动 /选择的行颜色
- 在C++的联合中显式设置活动成员
- 如何使用C++在活动目录的属性中设置值
- Winapi设置活动选项卡控件
- nvapi设置活动眼图返回错误
- 为所有openvdb::Grid节点设置/取消设置活动状态
- 如何在OSX中使用C++opencv highgui将活动窗口设置为opencv图像
- 在csplitterwind中设置活动面板
- Qt-> 如何将 ALT 键设置为活动状态
- 如何基于QProcess将窗口设置为活动窗口
- 当窗口设置为活动状态时获取通知