Moin generic,
da habe ich mich wohl mehr als unklar ausgedrückt
Genau das mache ich ja. Ich zeichne meine Bildchen, speichere sie in einer ImageList und weise dem Eintrag im OnGetImageIndex das passende Bildchen zu. Mein Problem ist halt nur, dass ich eine Lösung suche, das bei selektierten Zeilen der weiße Hintergrund des Bildchens nicht weiß ist, sondern so blau, wie der Hintergrund einer selektierten Zeile halt blau ist.
Vielleicht zur Verdeutlichung hier mal ein wenig Code:
Bildchen zeichnen und der ImageList hinzufügen:
Delphi-Quellcode:
procedure AddIcon(const Index: Integer);
var
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
try
Bitmap.Width := 16;
Bitmap.Height := 16;
with Bitmap.Canvas do
begin
Pen.Color := clBlack;
Brush.Color := CLASS_COLORS[Index mod Length(CLASS_COLORS)];
MoveTo(8, 3);
LineTo(13, 8);
LineTo(8, 13);
LineTo(3, 8);
LineTo(8, 3);
FloodFill(8, 8, clWhite, fsSurface);
end;
ProcForm.ClassImageList.Insert(Index, Bitmap, nil);
finally
Bitmap.Free;
end;
end;
Passendes Bildchen zum Eintrag raussuchen:
Delphi-Quellcode:
procedure TProcedureListForm.VSTGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
var Ghosted: Boolean; var ImageIndex: Integer);
var
Element: TProcElement;
begin
if Column = 0 then
begin
Element := TProcElement(VST.GetNodeData(Node)^);
ImageIndex := Element.ImageIndex;
end
else
ImageIndex := -1;
end;
Wie erhalte ich jetzt ein anderes Bildchen, wenn der Eintrag selektiert ist? Alternativ: Kann ich auf dem Wege den Hintergrund der Bildchen nicht weiß, sondern transparent machen?
Ich hoffe mein Problem ist jetzt klarer...
Grüße
Malte