![]() |
TVirtualTreeView, falsches Image angezeigt
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo #,
ich drehe hier gerade frei ... ;( Ein ganze normaler TVST mit einer ImageList (5 Images drin). Das letzte (ImageIndex=4) ist blau, es wird aber immer grün angezeigt ... In einem normalen TListView klappt das. Ich habe ein Bsp-Projekt mal angehängt (ohne Exe). Was ist hier los ? Benutzt wird Version 4.7.0 und Delphi 6. Danke Heiko |
Re: TVirtualTreeView, falsches Image angezeigt
Hallo,
irgendwas ist faul beim DrawImage. Not-Lösung. procedure TBaseVirtualTree.PaintImage alt
Delphi-Quellcode:
if (ImageInfo[iiOverlay].Index > -1) and (ImageInfo[iiOverlay].Index < 15) then
ExtraStyle := ILD_TRANSPARENT or ILD_OVERLAYMASK and IndexToOverlayMask(ImageInfo[iiOverlay].Index +1) neu
Delphi-Quellcode:
ohne das +1 geht es.
if (ImageInfo[iiOverlay].Index > -1) and (ImageInfo[iiOverlay].Index < 15) then
ExtraStyle := ILD_TRANSPARENT or ILD_OVERLAYMASK and IndexToOverlayMask(ImageInfo[iiOverlay].Index ) In der 4.8.1. ist der Code übrigens immer noch so. Liegt das vielleicht an meinen Images ? Heiko |
Re: TVirtualTreeView, falsches Image angezeigt
Hallo Heiko,
Das + 1 ist in diesem Falle definitiv erforderlich. Was hier genutzt wird ist die Möglichkeit der Windows API ein Bild einer Imagelist mit Overlay zu malen (letztlich über ImageList_DrawEx). Der zu übergebende Index des Overlays ist hierbei 1 basiert, nicht 0 basiert, wie sonst üblich. Der Grund hierbei ist auch ziemlich simpel: 0 um 8 bit nach links geschoben ergibt immer noch 0. Daher will die API hier also tatsächlich den Index + 1. Aber willst du wirklich ein Overlay? |
Re: TVirtualTreeView, falsches Image angezeigt
Hallo,
ich will, dass er mein blaues Bildchen anzeigt ! ;) Wo stelle ich dass denn ab mit dem Overlay ?. Schau dir doch mal mein Projekt an, das ist auf das wesentliche reduziert. Das mit dem shr 8 (oder shl 8) habe ich auch schon gesehen, aber nicht verstandne ;) Tatsache ist, dass es ohne das +1 geht. Heiko |
Re: TVirtualTreeView, falsches Image angezeigt
In dem VST Ereignis onGetImage wird der Typ des zu zeichnen Bildes übergeben.
Wahrscheinlich prüfst du nicht da drauf ab und daher siehst du immer nur die Bild 1-4. Du solltest du Icon nur malen bei "ikNormal". Habe gerade kein Delphi zur Hand, ggf. heißen die Sachen etwas anders. |
Re: TVirtualTreeView, falsches Image angezeigt
Hallo,
danke, das wars. Fürs Protokol ... ;)
Delphi-Quellcode:
Heiko
procedure TForm1.LV_WorkSteps2GetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer); begin if (Column=0) and (Kind=ikNormal) then begin ImageIndex:= 4; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz