프로그래밍/델파이

프로그래스바(TProgressBar) 색 바꾸기

채윤아빠 2009. 8. 2. 20:14
728x90
반응형
프로그레스바의 색을 바꾸는 방법은 매우 간단합니다.


위 그림을 보면, 붉은색으로 색을 변경하였는데, SendMessage로 메시지를 보내면 색 변경이 가능합니다.
       SendMessage(ProgressBar1.Handle, PBM_SETBARCOLOR, 0, RGB(255, 0, 0));
PBM_SETBARCOLOR 상수가 CommCtrl에 정의되어 있으므로, 그 유닛을 포함해 줘야만 컴파일이 성공적으로 됩니다.

아래 위 데모의 예제 소스를 첨부합니다.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, CommCtrl;

type
  TProgressBarColorChangeForm = class(TForm)
    pbChangeColor: TProgressBar;
    btnGO: TButton;
    tmrStep: TTimer;
    procedure btnGOClick(Sender: TObject);
    procedure tmrStepTimer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ProgressBarColorChangeForm: TProgressBarColorChangeForm;

implementation

{$R *.dfm}

procedure TProgressBarColorChangeForm.btnGOClick(Sender: TObject);
begin
  Timer1.Enabled := True;
  ProgressBar1.Position := 0;

  SendMessage(ProgressBar1.Handle, PBM_SETBARCOLOR, 0, RGB(255, 0, 0));
end;

procedure TProgressBarColorChangeForm.tmrStepTimer(Sender: TObject);
begin
  ProgressBar1.StepBy(3);

  Timer1.Enabled := ProgressBar1.Max <> ProgressBar1.Position;
end;

end.