AGB  ·  Datenschutz  ·  Impressum  







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

[VST] Image der selektierten Zeile

Ein Thema von stz · begonnen am 31. Mär 2008 · letzter Beitrag vom 1. Apr 2008
Antwort Antwort
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#1

[VST] Image der selektierten Zeile

  Alt 31. Mär 2008, 02:05
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
Miniaturansicht angehängter Grafiken
meditprocedurelist_189.png  
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
generic

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

Re: [VST] Image der selektierten Zeile

  Alt 31. Mär 2008, 11:05
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [VST] Image der selektierten Zeile

  Alt 31. Mär 2008, 12:13
Moin generic,
da habe ich mich wohl mehr als unklar ausgedrückt
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:
  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;
Passendes Bildchen zum Eintrag raussuchen:
Delphi-Quellcode:
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;
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?

Ich hoffe mein Problem ist jetzt klarer...

Grüße
Malte
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
generic

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

Re: [VST] Image der selektierten Zeile

  Alt 31. Mär 2008, 14:41
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [VST] Image der selektierten Zeile

  Alt 1. Apr 2008, 17:07
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...

Grüße
Malte
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  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:54 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