Как сделать список с темой Office XP, как прямоугольник выбора?

Каким будет самый простой и понятный способ показать сфокусированный/выбранный элемент списка в стиле Office XP?

Посмотрите этот пример изображения, чтобы прояснить идею:

enter image description here

Я думаю, мне нужно установить стиль списка в значение lbOwnerDrawFixedили lbOwnerDrawVariable, а затем изменить событие OnDrawItem?

Вот где я застрял, я не совсем уверен, какой код туда писать, пока я пробовал:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListBox).Canvas do
  begin
    if odSelected in State then
    begin
      Brush.Color := $00FCDDC0;
      Pen.Color   := $00FF9933;
      FillRect(Rect);
    end;

    TextOut(Rect.Left, Rect.Top, TListBox(Control).Items[Index]);
  end;
end;

Я должен был знать, что это не сработает, со мной происходят всякие странные вещи:

enter image description here

Что я делаю неправильно, и что еще более важно, что мне нужно изменить, чтобы заставить его работать?

Спасибо.

9
задан TLama 27 September 2012 в 23:54
поделиться