stringgrid的问题?点中某个cell后,想将所有值相同的cell变相同的颜色?

aiq 2009-09-25 01:50:58
stringgrid中值如下

1 2 3

2 4 5

6 4 6

我点中其中的一个2的cell ,该cell与另外一个2的cell同变成一个颜色,点到其他cell上,两个cell还变成原来的颜色

要求:不要重新刷新,上面只是我举的例子,实际过程中cell比较多,刷新的话会很慢
...全文
126 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinoalex 2009-09-27
  • 打赏
  • 举报
回复
[Code=Delphi(Pascal)]
//改改楼上的

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
Caption:= StringGrid1.Cells[ACol,ARow];
StringGrid1.Refresh;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if StringGrid1.Cells[ACol,ARow] = Caption then
begin
StringGrid1.Canvas.Brush.Color := clRed;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.Font.Color := clWhite;
end else
begin
StringGrid1.Canvas.Brush.Color := clWhite;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.Font.Color := clBlack;
end;
StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
end;
[/Code]
diecode 2009-09-27
  • 打赏
  • 举报
回复
7楼的方法不错
try__again 2009-09-26
  • 打赏
  • 举报
回复
我只会用TAdvStringGrid,唉
alanhao 2009-09-25
  • 打赏
  • 举报
回复
必须使用ONDrawCell事件完成
de410 2009-09-25
  • 打赏
  • 举报
回复
7楼的既是~~
bdmh 2009-09-25
  • 打赏
  • 举报
回复

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if StringGrid1.Cells[ACol,ARow] = '选中的值' then
begin
StringGrid1.Canvas.Brush.Color := clRed;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.Font.Color := clWhite;
StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
end;
end;
aiq 2009-09-25
  • 打赏
  • 举报
回复
具体能讲下怎样重绘吗
deertao 2009-09-25
  • 打赏
  • 举报
回复
不能刷新,只能重绘了
Canvas.Invalidate;
reasure 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 smallhand 的回复:]
Canvas.Invalidate;
[/Quote]

重绘
haerbinlg 2009-09-25
  • 打赏
  • 举报
回复
如果不刷新全部的话 建议应该把stringgrid拆成若干个小的单元
然后找出值相同的进行变色 其他的不用变
火龙岛主 2009-09-25
  • 打赏
  • 举报
回复
Canvas.Invalidate;
sanguomi 2009-09-25
  • 打赏
  • 举报
回复
要求:不要重新刷新,上面只是我举的例子,实际过程中cell比较多,刷新的话会很慢

-----------------
不刷新能达到你要求就怪了

5,928

社区成员

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

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