Q&A

  • progress bar를 폼의 Status bar에 위치시킬수 있나요..
progerss bar를 Status bar에 집어 넣고 싶은데 방법을 알고 싶습니다.

꼭 Status bar가 아니어도 상관업습니다. 비슷한 효과를 낼수있으면 됩니다.

그럼 수고~
4  COMMENTS
  • Profile
    최석기 2002.07.13 02:25
    // 다음은 스테이스바에 에디트,콤보,프로그레스바를
    // 삽입하는 예제입니다.

    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.



  • Profile
    성더기 2002.07.13 02:20
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer;
    begin
      ProgressBar1.Visible := True;
      ProgressBar1.Max := 100000;
      ProgressBar1.Position := 0;
      for i := 0 to 100000 do
      begin
        ProgressBar1.StepBy(1);
      end;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ProgressBar1.Parent := StatusBar1;
      ProgressBar1.Top := 2;
      ProgressBar1.Left := 0;
    end;

    참고하세요
  • Profile
    ㄴ ㅏ ㅁ ㅑ 2002.07.13 01:51
  • Profile
    gudwhrla 2002.07.13 01:49
    StatusBar의 Align 속성을 alNone 하고
    progerss bar를 이동해서 넣어보세요.

    만약 StatusBar의 Align 속성을 꼭  Bottom 을 사용해야  하면
    판넬을 Bottom으로 하고 그판넬에 StatusBar 복사하여 alNone으로
    해보세요

    이상 허접한 답변이었습니다.