【发布时间】:2012-01-31 18:04:05
【问题描述】:
我有 ListView (vsReport) 和 StringGrid,我想要的是如果我点击 ListView 中的某个元素,StringGrid 中的特定单元格必须更改颜色。我该怎么做?
路径用 1(上移)和 0(右移)填充,它从左下角开始,到右上角结束,我必须为这些单元格着色。
感谢您的回答,我已经解决了我的问题,但还有一个小问题,我怎样才能让单元格中的文本可见? FillRect 填充整个单元格。
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
var aRect: TRect;
a,x,y:integer;
path:string;
begin
path:=ListView1.Items[Item.Index].Caption;
x:=0;
y:=StringGrid1.RowCount;
for a := 0 to length(path) do
begin
if path[a]='1' then y:=y-1 else x:=x+1;
aRect := StringGrid1.CellRect(x-1,y-1);
StringGrid1.Canvas.Brush.Color := clBlue;
StringGrid1.Canvas.FillRect(aRect);
end;
end;
【问题讨论】:
-
欢迎来到 StackOverflow。到目前为止,您尝试了哪些不起作用的方法?这不是一个“请为我做作业”的网站。我们非常乐意尝试并引导您找到解决方案,或帮助您弄清楚为什么您正在做的事情不起作用,但您必须证明您自己已经为此付出了一些努力。请编辑您的问题以提供您迄今为止尝试过的代码,并解释它如何无法按您的预期工作,这里有人可以帮助您弄清楚如何修复它。谢谢。 :)
标签: delphi listview lazarus tstringgrid