|
гониво | iTunes | delphi | parser | |
мегаобои |
Поучительная статья
Думаю, не ошибусь, если скажу, что иногда в целом положительное впечатление от чего-либо может испортить одна деталь, на первый взгляд незначительная.
Так вот, по одной такой детали можно с первого взгляда вычислить большинство программ, написанных на Delphi. Не всем эта деталь будет портить впечатление, но… Некоторые люди, например, несколько презрительно относятся к Delphi и готовы пинать этот язык по любому поводу.
О какой же детали я говорю? О курсоре, который символизирует гиперссылку. Рука, одним словом. В Delphi этот курсор-рука, скажем так, отличается от стандартной руки Windows.
Сравните:
Чувствуете разницу? Лично мне курсор от Borland совсем не нравится.
Теперь, зная небольшой грешок Delphi-программ, можно порыскать по своим любимым программным продуктам и найти «своих». Вот некоторые из моих «знакомых»:
Почему товарищи из Borland не используют стандартный курсор Microsoft — для меня остается загадкой. Возможно, во время разработки первых версий Delphi привычной для нас «руки» еще не существовало, а позже внедрению нормального Win32-курсора помешала обычная лень…
Теперь же невообразимой красоты курсор заботливо вшивается в каждый скомпилированный Delphi exe-файл. Но мы не будем обращать внимание на эту медвежью услугу и постараемся получить курсор с человеческим лицом.
Поехали!
Дескрипторы всех используемых (и неиспользуемых) приложением курсоров хранятся в массиве Screen.Cursors
. Ход наших действий: получаем дескриптор вожделенной руки, помещаем его в определенную ячейку упомянутого массива, после чего нужному элементу управления указываем, чтобы тот использовал курсор из этой ячейки.
Итак, загрузка курсора из подсознания Windows:
Screen.Cursors [19] := LoadCursor (0, PChar (IDC_HAND)) ;
Приказы элементам управления:
Label13.Cursor := 19 ;
Panel7.Cursor := 19 ;
{ и т. д. }
Говорите — запутано? Способ ведь геройский, а настоящие герои…
Можно сделать быстрее и изящнее. С помощью справки узнаем, что наша рука (crHandPoint
) проживает по адресу Screen.Cursors
, индекс −21. Отлично. Мы ее (то есть, его) оттуда просто выселим:
Screen.Cursors [-21] := LoadCursor (0, PChar (IDC_HAND)) ;
Нужные элементы управления даже ничего не заметят: возьмут по старому адресу новый курсор, и все.
Теперь можете смеяться и хлопать себя по коленке: от человеческого курсора (с тенью, спешу заметить) вас отделяла одна несчастная строчка кода.
Страница обновлена 30 мая 2014 | corg@corg.kiev.ua | © 20052024 Олег Подчашинский (cOrg) |