>>紧急求助!如何设置DBGRID单元格颜色?见者有分!<<

lanble 2001-07-23 09:10:10
如何设置DBGRID单元格颜色,不是一行或一列的颜色,而是某一个具体单元格的颜色!
...全文
349 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangcfei 2001-08-10
  • 打赏
  • 举报
回复
在DBGrid1DrawColumnCell
if DataCol = 1 then
with DBGrid1.Canvas do
begin
Brush.Color := clRed;
Brush.Style := bsSolid;
FillRect(Rect);
end;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

别忘了,给分啦!
tongdings 2001-08-10
  • 打赏
  • 举报
回复
gz
dxpjj 2001-08-10
  • 打赏
  • 举报
回复
哈哈,居然有人回答,我也用不着提问了!
wljcr 2001-08-10
  • 打赏
  • 举报
回复
来晚了!
dana 2001-08-10
  • 打赏
  • 举报
回复
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if query1.recno mod 2<>0 then dbgrid1.canvas.Brush.color:=$00eaeaea;
dbgrid1.DefaultDrawcolumnCell(rect,datacol,column,state);
end;
qq_13439718 2001-08-10
  • 打赏
  • 举报
回复
infopower3000
jiangcfei 2001-08-10
  • 打赏
  • 举报
回复
我的方法你试了行的话,就给分了,否则我的积极性就没了。
dqiuqiu 2001-08-10
  • 打赏
  • 举报
回复
我也想知道啊!幸好有人解答了,并且我还有分吗?岂不是熊掌与鱼兼得!:)
machin 2001-08-10
  • 打赏
  • 举报
回复
在DBGrid1DrawColumnCell事件里写:
if state=cbselected then
with DBGrid1.Canvas do
begin
Brush.Color := clRed;
Brush.Style := bsSolid;
FillRect(Rect);
end;

你去试试看吧。。。
bpmb2 2001-07-23
  • 打赏
  • 举报
回复
这样简单点:
DBGrid1DrawColumnCell()中
if ......then
dbgrid1.canvas.font.color:=clred
else
dbgrid1.canvas.font.color:=clhighlighttext
......
cultra 2001-07-23
  • 打赏
  • 举报
回复
if POS('星期',Column.Field.AsString)<>0 then
DBGrid1.Canvas.TextRect( Rect, Rect.Left+2, Rect.Top+2,copy(Column.Field.AsString,1,10)+' 星期'+WeekDayTranChs(DateNum));


写在DBGrid1DrawColumnCell()中,上面写的是当字段的值中有“星期”子窜的时候,重画该单元。你或许可以在这个时候设置BRUSH,改变颜色的。
kuangning 2001-07-23
  • 打赏
  • 举报
回复
用twwDBGrid
gototop99 2001-07-23
  • 打赏
  • 举报
回复
请你试一试用 DbGrid 的 DrawColumnCell 方法吧,这个问题就可以解决的。

以前我试过了,可以。
Mark_zheng 2001-07-23
  • 打赏
  • 举报
回复
呵呵!我也有分???
dingsg111 2001-07-23
  • 打赏
  • 举报
回复
自己画
ie4888 2001-07-23
  • 打赏
  • 举报
回复
恐怕你得试试PwoerInfo的TwwDBGrid
lanble 2001-07-23
  • 打赏
  • 举报
回复
各位大虾,还有别的见解,尽量提,我再加分!谢谢合作!
lizy1998 2001-07-23
  • 打赏
  • 举报
回复
if ((str1='收入') or (str1='存入')) then
begin
oldpm:= DBGridMain.Canvas.pen.mode;
oldcolor:= DBGridMain.Canvas.Brush.color;
DBGridMain.Canvas.Brush.color:=$B6F2B6;//RGB颜色,可以先在photoshop里调好
dbGridMain.Canvas.pen.mode:=pmmask;
DBGridMain.DefaultDrawColumnCell(Rect, DataCol, Column, State);
DBGridMain.Canvas.Brush.color:=oldcolor;
DBGridMain.Canvas.pen.mode:=oldpm;
end;
machin 2001-07-23
  • 打赏
  • 举报
回复

对啊,我跟cultra做的一样,都是要自己画的。

1 先画色层

2 写文字

好了,我要领分了。。。
wuyh78 2001-07-23
  • 打赏
  • 举报
回复
^_^^_^:此问题,我已经做过,也已经解决,具体实现如下:
1、获得单元格所在的TRect;
2、在每一单元格,选择你想用的位图进行填充;
加载更多回复(2)
发布原因:在网上找了很久也没找到个好用的,不是慢,就是要依赖Excel(必须按装),又找呀找,才找到一个http://blog.csdn.net/xiangding/archive/2003/10/27/16918.aspx,但试了一下,不能用,不知是我用法不对还是本身有问题(由于没有给出使用示例),后来找到http://developer.51cto.com/art/200510/7494.htm这个不错,但他又让我装ehlid,不爽,所以对其做了修改,其它也就是去了个加页脚的地方,很爽,有进度条,导完后如果按安装了Excel则直接打开,如果没有的话就不管了,自已想办法打开吧!特点:一、不需安装Excel即可导出。二、有进度条。三、最多可以导出多少条,我没试,我试了5万条没有问题,时间也就是只需1-5分钟(我电脑较慢)。四、不需安装组件。使用方法(注:别忘了uses DBGridToExcel;):procedure TForm1.btn1Click(Sender: TObject);var DBGridToExcel: TDBGridToExcel; ExcelFileName: string;begin DBGridToExcel := TDBGridToExcel.Create(nil); try DBGridToExcel.TitleName := '入网车辆统计报表'; DBGridToExcel.BeginDate := '开始日期:2005-07-01'; DBGridToExcel.EndDate := '结束日期:2005-07-18'; DBGridToExcel.UserName := '系统管理员'; DBGridToExcel.DBGrid := dbgrd1; DBGridToExcel.ShowProgress := True; if ExcelFileName = '' then begin ExcelFileName := 'c:\1.xls'; with TSaveDialog.Create(nil) do begin Filter := 'Microsoft Excel xls文件|*.xls'; DefaultExt := 'xls'; if not Execute then Exit else ExcelFileName := FileName; end; end; DBGridToExcel.FileName := ExcelFileName; DBGridToExcel.Open := False; DBGridToExcel.ExportToExcel; finally DBGridToExcel.Free; end;end;

5,930

社区成员

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

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