Q&A

  • statusbar1.panels 에 progressbar구현은 어떻게...
statusbar 위에 statusbar1.panels를 추가하여

이부분을 어떤작업이 끝날때 까지 작업의

진행정도를 나타내는 progressbar형태로 만들려고

합니다...

어떻게 하면 구현 가능하겠습니까........



1  COMMENTS
  • Profile
    구창민 2000.01.06 02:07
    최수영 wrote:

    > statusbar 위에 statusbar1.panels를 추가하여

    > 이부분을 어떤작업이 끝날때 까지 작업의

    > 진행정도를 나타내는 progressbar형태로 만들려고

    > 합니다...

    > 어떻게 하면 구현 가능하겠습니까........

    >



    수영님 아래는 TStatusBar에 프로그레스바,콤보박스,에디트박스를

    삽입하는 예제입니다.

    그럼 즐거운 프로그래밍 하세요~



    unit Unit1;



    interface



    uses Messages, Windows, SysUtils, CommCtrl, Classes, Controls, Forms,

    Menus, Graphics, StdCtrls, RichEdit, ToolWin, ComCtrls;



    type

    TForm1 = class(TForm)

    SBar: TStatusBar;

    procedure SBarResize(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure FormShow(Sender: TObject);

    private

    { Private declarations }

    E : TComboBox;

    P : TProgressBar;

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.SBarResize(Sender: TObject);

    var

    Rect : TRect;

    begin

    // 인덱스0번째의 Rect를 가져온다.

    SBar.Perform(SB_GETRECT,0,LPARAM(@Rect));

    P.Top := Rect.Top;

    P.Left := Rect.Left;

    P.Width := Rect.Right - Rect.Left;

    P.Height := Rect.Bottom - Rect.Top;

    P.Visible := True;



    // 인덱스1번째의 Rect를 가져온다.

    SBar.Perform(SB_GETRECT,1,LPARAM(@Rect));

    E.Top := Rect.Top;

    E.Left := Rect.Left;

    E.Width := Rect.Right - Rect.Left;

    E.Height := Rect.Bottom - Rect.Top;

    E.Visible := True;

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    // 콤보박스 생성

    E := TComboBox.Create(SBar);

    E.Parent := SBar;

    E.Visible := False;



    // 프로그레스바 생성

    P := TProgressBar.Create(SBar);

    P.Parent := SBar;

    P.Position := 100;

    P.Visible := False;

    end;



    procedure TForm1.FormShow(Sender: TObject);

    begin

    SBar.Perform(WM_SIZE,0,0);

    end;



    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

    begin

    if Assigned(E) then

    E.Free;

    if Assigned(P) then

    P.Free;

    end;



    end.