私は最後のTPngComponents "PngComponents for Delphi 2009 - Delphi 10.2 Tokyo"を使用します。 簡単にprojectを作成して、私の問題を表示してください。2番目のTPngImageCollectionItemオブジェクトの割り当て後TreeViewは最初に割り当てられたイメージを塗りつぶします(Delphi XE 7)
2番目の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;
例:
を最小限のコードを記載してください
正しいコードは次のようになります。あなたの質問に問題を再現するために、外部リソースへのリンクの後ではなく(無効になる可能性があり、あなたの質問を今後の読者に役に立たないようにする) –
私はすべてを追加しようとしているが、 tのコードと説明と私はすべてのファイルを格納することができます隠すテキストのような機能を見つけることはありません。 – Ride
例が大きすぎる場合は、おそらく最小限ではありません。 –