Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.064 Beiträge
 
Delphi XE2 Professional
 
#3

AW: ListBox OnMouseOver Item-Farbe

  Alt 3. Jan 2018, 01:42
;
Delphi-Quellcode:
      //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;
end;
Also, wenn die Zeile "selected" ist dann machst du ein DrawFocusRect.
Und wenn sie dann nicht zusätzlich auch "focused" ist, machst du nochmal DrawFocusRect.

Das passiert also folgendes
Wenn eine Zeile "selected" und "focused" ist, dann zeichnest du das FocusRect und die ListBox nimmt es mit ihrem "internen DrawFocusRect wieder weg.

Wenn eine Zeile "selected" aber nicht "focused" ist dann zeichnest du das FocusRect, nimmst es wieder weg und die Listbox macht in dem Fall gar nichts.

Ist irgendwie doppelt gemoppelt.

Ein einfaches if odFocused in State then Canvas.DrawFocusRect(Rect); ist völlig ausreichend, denn eine Zeile kann nur dann "focused" sein wenn sie auch "selected" ist.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat