![]() |
VST zeichnet image falsch?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen!
Ich habe ein problem mit den Itemgrafiken vom VST. Column 0 wird richtig gezeichnet. In Column 2 zeichnet er 2 Image übereinander und ich weis nicht warum! zur Verdeutlichung habe ich mal ein Screenshot angehängt. Er zeichnet ein gelbes Exclamation Icon, wie er es auch sollte, darüber jedoch noch ein grünes Status Icon. Meine Paintroutine sieht so aus.
Delphi-Quellcode:
procedure TForm1.vstGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer); var daten:TOMeineDaten; begin daten:=TOMeineDaten(vst.GetNodeData(node)^); case column of 0:begin //rausnehmen hat nichts gebracht if daten.Dateiname='Verzeichnis' then imageindex:=2; if ((daten.ADSName=':Zone.Identifier') and (daten.ADSSize='26 Byte ')) or ((daten.Dateiname='Thumbs.db') and (daten.ADSName=':encryptable') and(daten.ADSSize='0 Byte ')) then ImageIndex:=0 else if ImageIndex<>2 then ImageIndex:=1; end; 2: if daten.Executable then imageindex:=4; <-- Problem! es werden 2 Image gezeichnet, obwohl der Index eindeutig ist. end; end; |
Re: VST zeichnet image falsch?
Hallo,
ich würde am Anfang der Methode mal
Delphi-Quellcode:
machen.
ImageIndex:= -1
Heiko |
Re: VST zeichnet image falsch?
@Hoika
Passiert genau das selbe. Also keine Verbesserung. :( mfG Richard |
Re: VST zeichnet image falsch?
Hallo,
schrewib mal nur ganz am Anfang
Delphi-Quellcode:
Wenn das Bild jetzt immer noch so kommt,
imageindex:= 4;
Exit; ist deine ImageListe zerschossen. Heiko |
Re: VST zeichnet image falsch?
Liste der Anhänge anzeigen (Anzahl: 1)
@hoika
Also ich habe jetzt Mal die selbe Imagelist an vst.images und an vst.stateimages gebunden und dazu den Code eingebunden.
Delphi-Quellcode:
Imagelist ist in Ordnung. Bild ist im Anhang. Nach weiteren Test komme ich zu dem Ergebnis:
imageindex:= 4;
Exit; Images werden falsch gezeichnet! Stateimages werden richtig gezeichnet! Finde ich sehr seltsam das ganze. Kann mir einer beantworten warum sich der Vst so verhält? mfG Richard |
Re: VST zeichnet image falsch?
Lösung:
Delphi-Quellcode:
procedure TForm1.vstGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer); var daten:TOMeineDaten; begin if (ikOverlay in [Kind]) then // << !!!! Exit; daten:=TOMeineDaten(vst.GetNodeData(node)^); case column of 0:begin //rausnehmen hat nichts gebracht if daten.Dateiname='Verzeichnis' then imageindex:=2; if ((daten.ADSName=':Zone.Identifier') and (daten.ADSSize='26 Byte ')) or ((daten.Dateiname='Thumbs.db') and (daten.ADSName=':encryptable') and(daten.ADSSize='0 Byte ')) then ImageIndex:=0 else if ImageIndex<>2 then ImageIndex:=1; end; 2: if daten.Executable then imageindex:=4; <-- Problem! es werden 2 Image gezeichnet, obwohl der Index eindeutig ist. end; end; |
Re: VST zeichnet image falsch?
@Nuclear Ping
Deine Lösung funktioniert! :) Kannst du uns auch etwas zu den Gründen sagen? Ist das ein Bug von Vst? Ich habe jetzt erstmal die normalen Image einfach weggelassen und nur Stateimages verwendet. Habe ich irgendwelche Funktionseinschränkungen bei der Darstellung im Vst, wenn ich deinen Code verwende? mfG Richard |
Re: VST zeichnet image falsch?
Warum er sich verhält, kann ich dir nicht sagen. Hab mir den Code im Source des VST dazu noch nicht angeschaut. Ich denke aber mal, dass man diesen Effekt wohl manchmal auch beabsichtigt will - für was auch immer - und er sich daher so verhält. Der VST bietet da ja viele Möglichkeiten.
|
Re: VST zeichnet image falsch?
Der VST mal mehrere Dinge auf einen Platz.
Als erstes das Icon, dann das Overlay. Also immer Kind und Column abfragen, damit rausgefunden wird, was wo gemalt wird! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 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