Доброе время суток
Если кто обращал внимание, в виндах старше 2к при работе мышой отсутствует фокус на таких элементах, как Button, ListBox, CheckBox и т.д. Короче, на всех, на которых он может быть =)
В Delphi, однако, даже в 2005 версии подобного не наблюдается. Это конечно, мелочь, которую сложно заметить, однако меня эта мелочь довела почти до психоза
После долгих ковыряний в сырцах VCL и на MSDN фокус удалось победить!
TForm1.OnShow(Sender: TComponent);
begin
SendMessage(Handle, WM_UPDATEUISTATE, MakeWParam(UIS_SET, UISF_NOFOCUS), 0);
end;
Все стандартные контролы выглядят как надо, исключение составляют те, где фокус злобные борланды рисуют принудительно DrawFocusRect() =)
Теперь, собственно говоря, вопрос: кто-нибудь вообще обращал внимание на этот злополучный фокус?
Здравствуйте, Sergei I. Gorelkin, Вы писали:
SIG>Обращали, конечно. VCL, как всегда, "впереди планеты всей". И все не так просто — при работе мышой нужно еще прятать подчеркивания на компонентах типа TLabel, а также учитывать, что видимость keyboard cues зависит от настроек пользователя.
Радует наличие родственной души =)
Подчеркивания на TLabel, на мой взгляд, не так раздражают, как полосатая рамка фокуса.
А с настройками (Экран -> Эффекты -> Скрывать указатели... для Win2K) все работает — если галочка выключена, то фокус не убирается никакими мессагами.
Предлагаю переписать нафиг VCL, чтобы фокусы и акселераторы работали как надо =)