AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ListBox OnMouseOver Item-Farbe

Ein Thema von LTE5 · begonnen am 30. Dez 2017 · letzter Beitrag vom 3. Jan 2018
 
Solutor

Registriert seit: 24. Dez 2017
15 Beiträge
 
Delphi XE2 Enterprise
 
#2

AW: ListBox OnMouseOver Item-Farbe

  Alt 2. Jan 2018, 19:09
Also mal "quick and dirty":

Man kommt nicht ums selbst Zeichnen in der Behandlungsroutine Drawitem der Listbox herum.
Damit das funktioniert, muss man die Eigenschaft Style der Listbox auf LbOwnerDrawFixed setzen.

Ich hab anstelle einer globalen Variable die Tag-Eigenschaft der Listbox als Zwischenspeicher verwendet.

Die Farben muss man wie ich es hier gemacht habe, dann selber setzen.

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
   With Control as Tlistbox do
   begin
      with canvas do
      begin
         brush.Color:=clwhite;//Standardfarfbe der Listbox
         Font.Color:=clblack;//Standardfarbe des Textes
         If OdSelected in State then //Wenn Eintrag markiert ist
         begin
            Brush.Color:=clblue;
            Font.Color:=clwhite;
         end;
         if Tag=Index then //Wenn sich der Cursor in der hier zu zeichneten Zeile befindet.
         begin
            Brush.Color:=clred;
            Font.Color:=clwhite;
         end;
         fillrect(rect);//Eintrag einfärben
         Textout(rect.left,rect.Top,Items[index]);//Text ausgeben
      end;

      //Trick um das Focus Rechteck auszublenden
      if (odSelected in State) then
      begin
         Canvas.DrawFocusRect(Rect);
         if not (odFocused in State) then Canvas.DrawFocusRect(Rect);
      end;
   end;
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Var z:Integer;
begin
   z:=ListBox1.ItemAtPos(TPoint.Create( X, Y ),True);
   if z<>Listbox1.Tag then
   begin
   Listbox1.Items.BeginUpdate;
   ListBox1.Tag:=z;
   Listbox1.Invalidate;
   Listbox1.Items.EndUpdate;
   end;
end;
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:30 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