;
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.