【发布时间】:2017-11-01 07:43:08
【问题描述】:
我使用最后一个 TPngComponents“PngComponents for Delphi 2009 - Delphi 10.2 Tokyo”。 创建简单的project 来显示我的问题。
为什么在第二次分配 TPngImageCollectionItem 对象 TreeView 后仍然绘制第一次分配的图像并且可能需要调用一些刷新函数?
type
TForm1 = class(TForm)
pilTree: TPngImageList;
pilNoImage: TPngImageList;
pilAllCor: TPngImageList;
tvCor: TTreeView;
pilAllNotCor: TPngImageList;
tvNoCor: TTreeView;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure AddNodes(ATV: TTreeView);
var
nFirst, nChild: TTreeNode;
begin
nFirst := ATV.Items.AddChild(nil, '1');
nChild := ATV.Items.AddChild(nFirst,'2');
nChild.ImageIndex := 1;
nChild.SelectedIndex := 1;
nFirst.Expanded := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
iI: Integer;
ItemAdd: TPngImageCollectionItem;
ANode: TTreeNode;
begin
// Steps working correct
for iI := 0 to 1 do begin
ItemAdd := pilAllCor.PngImages.Add;
ItemAdd.Assign(pilTree.PngImages[iI]);
end;
// Steps working NOT correct
for iI := 0 to 1 do begin
ItemAdd := pilAllNotCor.PngImages.Add;
ItemAdd.Assign(pilNoImage.PngImages[0]);
ItemAdd.Assign(pilTree.PngImages[iI]);
end;
//Setup treeview
tvCor.Images := pilAllCor;
tvNoCor.Images := pilAllNotCor;
AddNodes(tvCor);
AddNodes(tvNoCor);
end;
例子:
【问题讨论】:
-
请在您的问题中包含重现问题的最少代码,而不是在指向外部资源的链接后面(这可能会变得无效,从而使您的问题对未来的读者毫无用处)
-
我尝试添加所有但收到关于很多代码的消息并且没有解释并且找不到像隐藏文本这样我可以存储所有文件的功能。
-
如果您的示例太大,则可能不够小。
标签: delphi treeview tpngimagelist