Hallo,
die noch relativ neue
TVirtualImageList habe ich als Ersatz für die gute alte
TImageList verwendet. Seitdem zeichnet eine
VirtualTree Instanz aber keine Icons mehr mit dem "Ghosted" Style, den ich im
VirtualTree.OnGetImageIndex event auf
True setze. Mit der alten TImageList sah das wie im ersten Screen aus. Im zweiten Screen sieht man dass
Ghosted gar keinen Unterschied mehr macht.
VirtualTree malt in beiden Fällen das Icon über
Vcl.ImgList.TCustomImageList.DoDraw, welche (wenn ich das richtig verstehe) wiederum die
Winapi.CommCtrl.ImageList_DrawEx aufruft. Der
Style Parameter enthält bei einem Ghosted Icon die Konstante
Winapi.CommCtrl.ILD_BLEND50:
Delphi-Quellcode:
procedure TCustomImageList.DoDraw(
Index: Integer; Canvas: TCanvas; X, Y: Integer;
Style: Cardinal; Enabled: Boolean);
...
begin
if HandleAllocated
then
begin
if Enabled
then
ImageList_DrawEx(
Handle,
Index, Canvas.Handle, X, Y, 0, 0,
GetRGBColor(BkColor), GetRGBColor(BlendColor), Style)
else
begin
if FGrayscaleFactor <> 0
then
...
Jetzt weiß ich nicht ob das ein Bug in der TVirtualImageList ist, in VirtualTree, oder in der TCustomImageList...
Delphi Version ist die 10.3 - vielleicht gibt es da auch in der v10.4 schon einen Unterschied/Bugfix in der
DoDraw-Methode?