New Page 1
Delphi: Как сделать
цветной ProgressBar (TProgrssBar, PBM_SETBARCOLOR SendMessage).
Напомню, компонент TProgrssBar
находиться на закладке Win32*:

Как правило, он всегда имеет синий цвет*:

И другой цвет мы задать не можем, потому что у данного
компонента нет свойства Color. Как же быть? Можно
написать свой компонент. Вот его текст:
unit
ColorProgressBar;
interface
uses
SysUtils,
Classes,
Controls,
ComCtrls,
Graphics,
Messages,
Windows;
const
PBM_SETBARCOLOR
=
WM_USER+9;
type
TColorProgressBar
=
class(TProgressBar)
private
{ Private declarations }
FColor:
TColor;
procedure
SetColor(const
Value:
TColor);
protected
{ Protected declarations }
public
{ Public declarations }
procedure
CreateWnd;
override;
published
{ Published declarations }
property
Color:
TColor
read
FColor
write
SetColor;
end;
procedure
Register;
implementation
procedure
Register;
begin
RegisterComponents('MyCompnents',
[TColorProgressBar]);
end;
procedure
TColorProgressBar.CreateWnd;
begin
inherited;
if
HandleAllocated
then
SendMessage(Handle,
PBM_SETBARCOLOR,
0,
FColor);
end;
procedure
TColorProgressBar.SetColor(const
Value:
TColor);
begin
FColor
:=
Value;
if
HandleAllocated
then
SendMessage(Handle,
PBM_SETBARCOLOR,
0,
FColor);
end;
end. |
Прежде чем рассказать, о том как устанавливать новый компонент, немого
комментариев к коду. Здесь мы переопределяем процедуру
CreateWnd которая отвечает за первоначальную создание окна
ProgressBar. В ней просто идет посыл сообщения
PBM_SETBARCOLOR, которая указывает Windows каким цветом
нужно окрасить ProgressBar. Тоже самое происходит и
при изменении свойства Color.
Теперь попробуем инсталлировать наш компонент - заходим в
"Component" -> "Install Component"*:

В появившемся окне выбираем наш модуль и жмем ОК*:

И вот у нас готов новый компонент
TColorProgressBar на закладке MyComonents*:

На какую закладку поместить компонент вы можете задать вот в этом фрагменте
кода:
procedure
Register;
begin
RegisterComponents('MyCompnents',
[TColorProgressBar]);
end; |
Положим компонент на форму и убедимся, что у него есть свойство
Color*:

Скриншоты, помеченные знаком * ,
являются цитатами и иллюстрациями
программного продукта "Delphi", авторское
право на который принадлежит "Borland Software
Corporation".
|