![]() |
[VST] Image der selektierten Zeile
Liste der Anhänge anzeigen (Anzahl: 1)
Moin moin,
ich habe einigen Einträgen in meinem VST jetzt kleine selbst gezeichnete Symbole spendiert. Klappt auch soweit gut, aber sobald die Zeile mit Symbol selektiert ist, fällt der weiße Hintergrund meines 16x16 Pixel großen Bitmaps sehr unangenehm auf. Zur Veranschaulichung ein Screenshot im Anhang. Mein Wunsch: Der Hintergrund des Symbols (jetzt noch weiß) soll irgendwie transparent sein, sich also der Farbe anpassen, d.h. im selektierten Fall halt blau sein. Aber wie kann ich das realisieren? Kann ich eine andere ImageList für selektierte Einträge angeben? Grüße Malte |
Re: [VST] Image der selektierten Zeile
Die Icons brauchst du nicht selbst zeichenen.
Du kannst dafür eine TImageList nehmen und diese dem VST zuweisen. In dem Ereignis onGetImage bzw. onGetImageEx kannst du dann pro Knoten reagieren und das richtige Symbol bestimmen. |
Re: [VST] Image der selektierten Zeile
Moin generic,
da habe ich mich wohl mehr als unklar ausgedrückt :oops: 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:
Passendes Bildchen zum Eintrag raussuchen:
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;
Delphi-Quellcode:
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?
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; Ich hoffe mein Problem ist jetzt klarer... Grüße Malte |
Re: [VST] Image der selektierten Zeile
Du kannst die Transparenz in der Imagelist vorgeben.
Andere Methode ist das du mit einer Bitmap-Mask arbeiten. In deinem Fall empfehle ich dir die erste Methode. Beim Hinzufügen müsstest du dann die "AddMasked" Methode verwenden. Dort kannst du die Transparenzfarbe angeben. |
Re: [VST] Image der selektierten Zeile
Kann es sein, dass die Bitmap-Masken der ImageList nur mit bestimmten Windows-Versionen funktionieren? Auf meinem Windows-XP SP2 Rechner funktioniert es jetzt nämlich ganz wunderbar, aber auf meinem Windows 2000 SP4 PC sieht es immer noch so aus wie in dem Screenshot oben. Und das mit der gleiche Exe... :gruebel:
Grüße Malte |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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