Ich fülle einen Treeview und weise den Knoten der obersten und darauffolgenden Ebene Images zu. Die letzte Ebene soll keine Images haben:
Delphi-Quellcode:
procedure FillTreeView(hTV: THandle; Computer: String; Users: TUsers);
var
Groups: TStringArray;
i, j: Integer;
tvi: TTVInsertStruct;
hr: HTREEITEM;
hParent: HTREEITEM;
begin
Groups := EnumGroups(Computer);
ZeroMemory(@tvi, sizeof(tvi));
tvi.hParent := nil;
tvi.hInsertAfter := TVI_ROOT;
tvi.item.mask := TVIF_TEXT or TVIF_IMAGE or TVIF_SELECTEDIMAGE;
tvi.item.iImage := 5;
tvi.item.iSelectedImage := 5;
tvi.item.pszText := PChar(Computer);
hr := TreeView_InsertItem(hTV, tvi);
for i := 0 to length(Users) - 1 do
begin
tvi.hParent := hr;
tvi.hInsertAfter := TVI_SORT;
tvi.item.mask := TVIF_TEXT or TVIF_IMAGE or TVIF_SELECTEDIMAGE;
tvi.item.iImage := 2;
tvi.item.iSelectedImage := 2;
tvi.item.pszText := PChar(String(Users[i].Name));
hParent := TreeView_InsertItem(hTV, tvi);
for j := 0 to length(Users[i].UserGroups) - 1 do
begin
tvi.hParent := hParent;
tvi.item.mask := TVIF_TEXT; // <-- Nur die Text-Member ist gültig
tvi.item.pszText := PChar(Users[i].UserGroups[j]);
TreeView_InsertItem(hTV, tvi);
end;
TreeView_Expand(hTV, hParent, TVE_EXPAND);
end;
TreeView_Expand(hTV, hr, TVE_EXPAND);
end;
In der komentierten Zeile mache ich die iImage und iSelectedImage Member ungültig. mask hat dann auch wieder den Wert 1. Aber trotzdem zeichnet er mir das Image mit dem Index 0 aus der ImageListe vor die Knoten. Aber da will ich keine Images haben. Wie bekomme ich die da weg?
Eilt nicht mehr, habe doch noch ein schönes Image gefunden.