Р а з д е л ы
Новости
Гостевая
Форум
Чат
Учебники
Программы
Статьи по Delphi
Статьи по Html
Компьютерные статьи
Java скрипты
Приколы
Отправить SMS
Мои разработки
 
К о н т а к т ы

ICQ: 445511525
e-mail: ZORBI@bk.ru

c o p y r i g h t
p r o g r a m m i n g
d e s i g n e d
by ZORBI

Т р о и ц к   г

 
С с ы л к и


 
С ч е т ч и к и
Rambler's Top100
 
..:: Статьи ::..
Цветной ScrollBar

   В Windows предусмотрено сообщение WM_CtlColorScrollBar,
   которое посылается окну, содержащему элементы управления
   ScrollBar (полосы прокрутки). В ответ на это сообщение
   окно должно вернуть системе кисть, которой надо закрасить
   полосу прокрутки. С помощью WM_CtlColorScrollBar можно
   получать разноцветные полосы прокрутки, что иногда бывает
   достаточно красиво.

   В Delphi форма при получении этого сообщения посылает
   соответствующему компоненту типа TScrollBar сообщение
   CN_CtlColorScrollBar, перепоручая обработку ему. И тут
   мы сталкиваемся с явным глюком VCL: это сообщение передаётся 
   стандартную оконную процедуру, хотя сообщение само по
   себе нестандартное, и стандартная процедура заведомо не
   сможет его обработать. Из-за этого TScrollBar не может
   изменять свой цвет, хотя львиная доля работы, необходимой
   для этого, делается в VCL. Чтобы исправить это, достаточно
   передать обработку CN_CtlColorScrollBar в метод DefaultHandler
   вместо DefWndProc. Ещё надо перенести в раздел published свойство
   Color, чтобы получить возможность управлять цветом полосы прокрутки.

   Но, несмотря на то, что в VCL здесь явная ошибка, не исправленная,
   кстати, даже в седьмой версии Delphi, править исходный код StdCtrls
   всё же не стоит. Вместо этого лучше написать свой компонент,
   который доделает то, что не доделано в стандартном TScrollBar'е.
   Код этого компонента будет выглядеть так:

   type
     TColorScrollBar=class(TScrollBar)
     private
      procedure CNCtlColorScrollBar(var Msg:TMessage);message CN_CtlColorScrollBar;
     published
      property Color;
     end;

   procedure TColorScrollBar.CNCtlColorScrollBar(var Msg:TMessage);
   begin
     DefaultHandler(Msg)
   end;

   Создав и зарегистрировав такой компонент, вы получите возможность
   управлять цветом полосы прокрутки. К сожалению, управлять цветом
   стандартных полос прокрутки формы или ScrollBox'а так же легко не
   получится.

   В принципе, реализовав обработку CN_CtlColorScrollBar не с помощью
   процедуры DefaultHandler, а самостоятельно, можно получить не только
   цветную полосу прокрутки, но и полосу, раскрашенную разными узорами.
	             		

Источник: www.delphikingdom.ru  

Hosted by uCoz