procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
//Далее простейший вариант прорисовки
(Control as TListBox).Canvas.FillRect(Rect);
DrawText(
(Control as TListBox).Canvas.Handle,
PChar((Control as TListBox).Items[Index]),
Length((Control as TListBox).Items[Index]),
Rect,
Control.DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER or DT_NOPREFIX)); // Это можно оптимизировать
// И самое главное!
if odFocused in State then [B]DrawFocusRect[/B]((Control as TListBox).Canvas.Handle, Rect); // Пользуемся свойством подпрограммы DrawFocusRect, которое гласит, что её повторный вызов убирает рамку (которая рисуется с помощью операции xor)
end;