Конференция "WinAPI" » Запретить DrawFocusRect. при отрисовке строк Listbox [D7, WinXP]
 
  • Maksim V. (01.11.09 23:58) [0]
    Здравствуйте. Необходимо запретить отрисовку рамки у выделенных элементов ListBox когда его окно сфокусировано. Вполне вероятно данная рамка рисуется через DrawFocusRect. если в родительском окне возвращать 0 в WM_DRAWITEM, можно убрать рамку. Интересует способ удаления этой рамки когда используется сабклассинг только самого элемента управления и WM_DRAWITEM в родительском окне не меняется. Спасибо.
  • Leonid Troyanovsky © (02.11.09 10:18) [1]

    > Maksim V.   (01.11.09 23:58)  

    > Здравствуйте. Необходимо запретить отрисовку рамки у выделенных
    > элементов ListBox когда его окно сфокусировано


    procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
     Rect: TRect; State: TOwnerDrawState);
    begin
     with (Control as TListBox), Canvas do
       begin
         FillRect(Rect);
         TextOut(Rect.Left, Rect.Top, Items[Index]);
         if odFocused in State then
           DrawFocusRect(Rect);
       end;
    end;


    Только, нехорошо это, прятать фокус.

    --
    Regards, LVT.
 
Конференция "WinAPI" » Запретить DrawFocusRect. при отрисовке строк Listbox [D7, WinXP]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]