首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在第二次赋值TPngImageCollectionItem对象之后,TreeView仍然绘制第一个指定的图像(Delphi 7)

在第二次赋值TPngImageCollectionItem对象之后,TreeView仍然绘制第一个指定的图像(Delphi 7)
EN

Stack Overflow用户
提问于 2017-11-01 07:43:08
回答 1查看 150关注 0票数 2

我使用最后一个TPngComponents "PngComponents for Delphi 2009 -Delphi10.2东京“。创建简单的项目来显示我的问题。

为什么在第二次分配TPngImageCollectionItem对象之后,TreeView仍然绘制第一个指定的图像,并且可能需要调用一些刷新函数?

代码语言:javascript
复制
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;

示例:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-01 14:11:00

将TPngImage添加到TPngImageList的方法是使用AddPng而不是摆弄集合。这还将更新负责实际显示图像的基础Windows映像列表。

正确的代码应该如下所示:

代码语言:javascript
复制
  for iI := 0 to 1 do begin
    pilAllCor.AddPng(pilTree.PngImages[iI].PngImage);
  end;

如果要更改现有项,则应分配集合项的PngImage属性:

代码语言:javascript
复制
    pilAllCor.PngImages[iI].PngImage := pilTree.PngImages[iI].PngImage;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47050299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档