点击DBGridEh单元格后,让单元格变色(不是整行变色),怎么搞?

nimeide1234567890 2017-07-28 11:19:01
点击DBGridEh单元格后,让单元格变色(不是整行变色),怎么搞?

DBGridEh1DrawDataCell事件在点击后不会触发,为什么点击不会触发?
DBGridEh1DrawColumnCell事件里能实现吗?

注示:要的是点击后变色
...全文
412 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nimeide1234567890 2017-08-02
  • 打赏
  • 举报
回复
引用 6 楼 lyhoo163 的回复:
[quote=引用 1 楼 lyhoo163 的回复:] 一般在onDrawColumnCell事件中处理 例如:

procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
var i :integer;
begin
  if (Column.FieldName='ITEM_TYPE') and                                         // 指定字段名
     (DbGridEh1.DataSource.DataSet.FieldByName('ITEM_TYPE').AsString='P') then  // 指明 Cell的值
        DbGridEh1.Canvas.Brush.color:=clred;
  DbGridEh1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
楼主可以参考此代码,修改条件,就是单元变色的效果呀![/quote] 你好,我要的是单击这个单元框后变色。
hongss 2017-07-31
  • 打赏
  • 举报
回复
这个不是点击变色的,是显示时变色。代码就是1/2楼的。
nimeide1234567890 2017-07-31
  • 打赏
  • 举报
回复
引用 3 楼 hongss 的回复:
我也在DBGrid里做过这样的,还没做过DBGridEh~~~ 就像这样的
高人能否贴上代码?
lyhoo163 2017-07-31
  • 打赏
  • 举报
回复
引用 1 楼 lyhoo163 的回复:
一般在onDrawColumnCell事件中处理 例如:

procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
var i :integer;
begin
  if (Column.FieldName='ITEM_TYPE') and                                         // 指定字段名
     (DbGridEh1.DataSource.DataSet.FieldByName('ITEM_TYPE').AsString='P') then  // 指明 Cell的值
        DbGridEh1.Canvas.Brush.color:=clred;
  DbGridEh1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
楼主可以参考此代码,修改条件,就是单元变色的效果呀!
hongss 2017-07-28
  • 打赏
  • 举报
回复
我也在DBGrid里做过这样的,还没做过DBGridEh~~~

就像这样的
nimeide1234567890 2017-07-28
  • 打赏
  • 举报
回复
引用 1 楼 lyhoo163 的回复:
一般在onDrawColumnCell事件中处理 例如:

procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
var i :integer;
begin
  if (Column.FieldName='ITEM_TYPE') and                                         // 指定字段名
     (DbGridEh1.DataSource.DataSet.FieldByName('ITEM_TYPE').AsString='P') then  // 指明 Cell的值
        DbGridEh1.Canvas.Brush.color:=clred;
  DbGridEh1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
这个在点击后能触发? 并改变这个单元格的颜色吗?
lyhoo163 2017-07-28
  • 打赏
  • 举报
回复
一般在onDrawColumnCell事件中处理 例如:

procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
var i :integer;
begin
  if (Column.FieldName='ITEM_TYPE') and                                         // 指定字段名
     (DbGridEh1.DataSource.DataSet.FieldByName('ITEM_TYPE').AsString='P') then  // 指明 Cell的值
        DbGridEh1.Canvas.Brush.color:=clred;
  DbGridEh1.DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧