TStringGrid不能单独设置某个单元的颜色,你应该用TDrawGrid,自己画吧。隐藏某行某列的功能也需要自己动手,你可以去网上找一找有没有现成的。
解决方案 »
- 求一條SQL 語句
- 我用clientdataset去修改一个记录,为什么修改不成功呢?
- 那位告诉我SetLength的用法
- 我发现Delphi的Bug啦!!!!
- vcshcn(黑色的星星).领分
- 5000元购买各类大型程序源码。或用我的ERP交换。
- 想学delphi,现在有没有针对delphi 2007的入门书籍?
- LoadFromFile 网络gif图片 ??
- 如当我为表田数据的时候,我想让qt_id自动增加,不用手工添加(我的数据库是sql),我用table连接表的,编程方法怎么写
- 我不怕臭鸡蛋,我又回来了(一脸的烈士临行前的表情)
- 小菜一碟!如果你是高手!
- delphi打印问题求教高人,帮帮忙!
响应StringGrid的OnDrawCell事件即可,注意STRINGGRID也是有CANVAS属性的,以下是一个例子,希望对你有所启发:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with StringGrid1.Canvas do
begin
Brush.Color:= RGB(255,0,0) ;
Pen.Style := psSolid ;
Pen.Width := 2 ;
Pen.Color:= RGB(0,255,0) ;
case ACol of
1:begin
Rectangle(Rect.Left,Rect.Top,Rect.Right,Rect.Bottom) ;
end ;
2:begin
Moveto(Rect.Left,Rect.Top);
Lineto(Rect.Right,Rect.Bottom) ;
end
else
begin
Ellipse(Rect.Left,Rect.Top,Rect.Right,Rect.Bottom) ;
end ;
end ;
end ;
end;
给多少分看你好了!如果需要帮助,Em!ok!
你的方法只是从视觉上看起来是这么回事,但我问的是从逻辑上来控制,举个例子,
我要在某时刻(不一定非在StringGrid1DrawCell时触发),指定某行的颜色,还能这么做吗? 另外,隐藏某行某列呢?
再加把劲。
隐藏某行可以将其行设置为0或-1,实际事好像设置为0要好看一些。
改变颜色我做了一个简单的,你试试,它可以改变了(1,2)的颜色和字体,当然你还需要完善。
procedure TForm1.BitBtn1Click(Sender: TObject);
var
ARect:TRect;
begin
ARect:=StringGrid1.CellRect(1,2);
with StringGrid1 do
begin
with Canvas do //改变当前行的颜色
begin
Brush.Color:=$00AAA866;
Font.Color:=clBlack;
Font.Style:=[fsBold];
FillRect(aRect);
TextOut(aRect.Left+2,aRect.Top+3,Cells[1,2]);
end;
end;
修改color ,visible 等属性.