AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VST zeichnet image falsch?

Ein Thema von richard_boderich · begonnen am 14. Mär 2008 · letzter Beitrag vom 14. Mär 2008
Antwort Antwort
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

VST zeichnet image falsch?

  Alt 14. Mär 2008, 12:24
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='Verzeichnisthen 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;
Miniaturansicht angehängter Grafiken
screenshot_163.jpg  
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: VST zeichnet image falsch?

  Alt 14. Mär 2008, 12:36
Hallo,

ich würde am Anfang der Methode mal

ImageIndex:= -1 machen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#3

Re: VST zeichnet image falsch?

  Alt 14. Mär 2008, 12:39
@Hoika

Passiert genau das selbe. Also keine Verbesserung.

mfG Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: VST zeichnet image falsch?

  Alt 14. Mär 2008, 12:51
Hallo,

schrewib mal nur ganz am Anfang

Delphi-Quellcode:
imageindex:= 4;
Exit;
Wenn das Bild jetzt immer noch so kommt,
ist deine ImageListe zerschossen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#5

Re: VST zeichnet image falsch?

  Alt 14. Mär 2008, 12:59
@hoika

Also ich habe jetzt Mal die selbe Imagelist an vst.images und an vst.stateimages gebunden und dazu den Code eingebunden.

Delphi-Quellcode:
imageindex:= 4;
Exit;
Imagelist ist in Ordnung. Bild ist im Anhang. Nach weiteren Test komme ich zu dem Ergebnis:

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
Miniaturansicht angehängter Grafiken
screenshot2_199.jpg  
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#6

Re: VST zeichnet image falsch?

  Alt 14. Mär 2008, 14:20
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='Verzeichnisthen 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;
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#7

Re: VST zeichnet image falsch?

  Alt 14. Mär 2008, 14:34
@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
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#8

Re: VST zeichnet image falsch?

  Alt 14. Mär 2008, 14:43
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.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#9

Re: VST zeichnet image falsch?

  Alt 14. Mär 2008, 16:10
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!
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz