ここで、ファイル名とそれに関連するアイコンをvirtualtreeviewに追加する簡単なコード
PFileInfoRec = ^TFileInfoRec;
TFileInfoRec = record
strict private
vFullPath: string;
vFileName: string;
vFileIcon: hIcon;
public
constructor Create(const FullPath: string);
property FullPath: string read vFullPath;
property FileNam : string read vFileName;
property FileIcon: hIcon read vFileIcon;
end;
shGetFileInfo Apiを使用してアイコンハンドルを取得した後
procedure TMainFrm.VSTGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
var Ghosted: Boolean; var ImageIndex: Integer);
var
FileInfo: PFileInfoRec;
Icon: TIcon;
begin
FileInfo := Sender.GetNodeData(Node);
Icon := TIcon.Create;
try
Icon.Handle := FileInfo.FileIcon;
if Kind in [ikNormal , ikSelected] then
begin
if Column = 1 then ImageIndex := ImageList.AddIcon(Icon);
end;
finally
Icon.Free; //here the probelme
end;
end;
Icon.Free; を削除するときに混乱するのは何ですか。コードは問題なく動作します アイコン付きのファイルが追加されましたが、無料の TIcon オブジェクトの場合、アイコンの追加は失敗します!! 誰でも私に説明してくださいこのコードの何が問題なのですか??
事前に助けてくれてありがとう...