起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 274|回复: 18

【结贴】TStringGrid 的 DrawCell 属性**

[复制链接]
发表于 2008-11-14 10:13:02 | 显示全部楼层 |阅读模式
implementation
var
   XgForm : TXGQC;
   m,n : integer;
   intleArray : array of integer;
type
TMyGrid=class(TStringGrid)
end;

啊2.jpg

21.02 KB, 下载次数: 129

回复

使用道具 举报

发表于 2008-11-14 10:23:09 | 显示全部楼层
DrawCell这个方法有吗?
错误提示说没有定义改方法。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-14 10:42:17 | 显示全部楼层
我定义了一个 TStringGrid  还要 定义 TStringGrid  的 DrawCel 方法?1楼代码我是在DELPHI7里测试过拿过来用。不知道还缺少什么东西。
回复 支持 反对

使用道具 举报

发表于 2008-11-14 10:47:15 | 显示全部楼层
调用OnDrawCell看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-14 10:55:30 | 显示全部楼层
改成 TMyGrid(StringGrid1).OnDrawCell(ACol,ARow,Rect,State); 的话

[错误]Biz:\JXC_GJP_\FUNC\JBXX\QCCWSJGN.FUNC.DIR\QCCWSJ.FORM.PAS(206, 32): Not enough actual parameters
回复 支持 反对

使用道具 举报

发表于 2008-11-14 11:05:32 | 显示全部楼层
TStringGrid能点出来drawcell吗?d6中我点不出来啊。
回复 支持 反对

使用道具 举报

发表于 2008-11-14 11:06:27 | 显示全部楼层
ondrawcellSender: TObject; ACol, ARow: Integer;  Rect: TRect; State: TGridDrawState)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-14 11:08:17 | 显示全部楼层
我是想给 StringGrid 给个底色。   我是在 DELPHI 7 里点出来的。
代码如下
if(ARow=5)and(ACol>0)then     //将第2行的背景变成红色
   begin
      StringGrid1.Canvas.Brush.Color:=$FFECDD;
      StringGrid1.Canvas.FillRect(Rect);         //画红色
      StringGrid1.OnDrawCell:=nil;     //设置为nil,下面就不会无限递归
      try
          //TMyGrid(StringGrid1).OnDrawCell(ACol,ARow,Rect,State);//如果注销这句 单元格的内容就 显示不出来了,直接被底色覆盖掉了
      finally
          StringGrid1.OnDrawCell:=StringGrid1DrawCell;   //恢复事件的地址
     end;
   end;
回复 支持 反对

使用道具 举报

发表于 2008-11-14 11:19:18 | 显示全部楼层
8楼的代码中没有看到你调用DrawCell方法啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-14 11:21:39 | 显示全部楼层
procedure TQCCWSJ.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  c,q: integer;
begin

if(ARow=5)and(ACol>0)then     //将第2行的背景变成红色
   begin
      //StringGrid1.Canvas.Brush.Color := $FFECDD;
      StringGrid1.Canvas.Brush.Color:=$FFECDD;
      StringGrid1.Canvas.FillRect(Rect);         //画红色
      StringGrid1.OnDrawCell:=nil;     //设置为nil,下面就不会无限递归
      try
          TMyGrid(StringGrid1).OnDrawCell(ACol,ARow,Rect,State);
      finally
          StringGrid1.OnDrawCell:=StringGrid1DrawCell;   //恢复事件的地址
     end;

   end;
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 12:18 , Processed in 0.046317 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表