我有 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;
最佳答案
OnDrawCell
处理程序(参见步骤 3)提供的特定坐标 Objects
属性时,您可以通过将颜色类型转换为 TObject
来使用此属性进行颜色存储。如果您需要帮助,请大喊。 OnDrawCell
事件处理程序中绘制彩色单元格(需要帮助时在 Stack Overflow 上搜索 [Delphi] StringGrid OnDrawCell)。 OnSelectItem
事件公开被单击或以其他方式选择的项目。 StringGrid.Repaint
就足够了。 关于delphi - ListView 和着色单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9084606/