stringgrid中的某行着色问题 ( 积分: 100 )

  • 主题发起人 主题发起人 klhunter
  • 开始时间 开始时间
K

klhunter

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TfUserInput.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
i : integer;
mRect : Trect;
begin
if (acol=0) or (arow=0) then
exit;
if (nowrow<>-1) and (gdfocused in state) then
for i := 1 to stringgrid1.ColCount do
begin
label3.Caption :=label3.Caption +'22';
self.StringGrid1.Canvas.Brush.Color :=clSkyBlue;
mRect:=stringgrid1.CellRect(i,arow);
self.StringGrid1.Canvas.FillRect(mrect);
self.StringGrid1.Canvas.TextOut(mrect.Left ,mrect.Top ,stringgrid1.Cells[i,arow] );
end;
end;
我想实现的是当点中某一个单元格时,此行全部变成蓝色,但编译以后只有当前单元格变色,循环都被执行了,为什么不变色? DEFAULE DRAW给从新刷成白色了?
 
看看我软件的效果,是不是和你的差不多,如何是你需要的额,可以交流。

http://www.skycn.com/soft/32971.html
 
我看了你那个软件了,你也是用STRINGGRID实现的么? 请问是如何做到的,我是要实现和你一样的效果,选中某单元格,整行同时变色
 
是的,就是普通的stringgird,感觉还行吧。
 
不是有个属性可设置的么,点那一行那一行就是蓝色,还用写代码??
在Options中把goRangeSelect 设为False 再把goRowSelect 设为True 不就是了.
如果要点后的行都变色,一样在Options设置.
 
to delhpi:
请问你是如何实现的? 很漂亮

to 隐士山人,:
如果设置了rowselect,就无法编辑单元格了。

其实如果那样设置的话,通过在GRID,表面放一个EDIT,也可以实现对单元格的编辑,就是觉得稍微有点麻烦啊,delphi,我猜你可能就是这样作的,设置ROWSELECT,然后把画刷颜色改变,用另一个控件,比如文本框来获得输入,
猜的对不? :)
 
全文检索 查询一下
 
多人接受答案了。
 
后退
顶部