線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2586
推到 Plurk!
推到 Facebook!

如何將ProgressBar放在StatusBar上

 
ReaderFrank
一般會員


發表:1
回覆:4
積分:1
註冊:2002-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-14 12:02:00 IP:210.241.xxx.xxx 未訂閱
請教各位前輩:    小弟用以下Code
  try
    MyProgressBar := TProgressBar.Create ( self ) ;
    // MyProgressBar.Visible := False ;        MyProgressBar.Parent := StatusBar1 ;        MyProgressBar.Top := StatusBar1.Top   2 ;
    MyProgressBar.Height := StatusBar1.Height - 4 ;
    MyProgressBar.Left := StatusBar1.Panels[0].Width  
                          StatusBar1.Panels[1].Width   2 ;
    MyProgressBar.Width := StatusBar1.Panels[2].Width - 4 ;        MyProgressBar.Visible := True ;
    MyProgressBar.Min := 1 ;
    MyProgressBar.Max := 100 ;
    MyProgressBar.Position := 50 ;        MyProgressBar.BringToFront ; //這也沒用
  except
    ...
  end ;
ProgressBar確定有產生,但險示不出來。如果我不 設此ProgressBar的Top等值,我又可以看到此Bar 各位前輩請指點一下。 ReaderFrank
ReaderFrank
一般會員


發表:1
回覆:4
積分:1
註冊:2002-04-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-14 13:17:07 IP:210.241.xxx.xxx 未訂閱
各位前輩: >>MyProgressBar.Top := StatusBar1.Top 2 ; 小弟試出來了。是這行錯了,應 MyProgressBar.Top := 2 ; 小弟忘了,StatusBar1.Top是指其Parent的Form的位置。 真是試昏頭。 吃過飯,走在路上想起來,回到公司一試就出來了。 謝謝。 ReaderFrank
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-14 21:45:05 IP:192.168.xxx.xxx 未訂閱
引言: 真是試昏頭。 吃過飯,走在路上想起來,回到公司一試就出來了。 ReaderFrank
ReaderFrank您真是18歲嗎? 18歲就已經在公司上班了嗎??? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
sanwin
一般會員


發表:20
回覆:60
積分:16
註冊:2002-06-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-06-20 08:17:24 IP:61.217.xxx.xxx 未訂閱
請問一下,為什麼我參照上面的做法,執行程式的時候,一直跳出out of bound() 的視窗,只好用工作管理員把它強制關閉,不知問題是出在那裡? 我是剛入門的子弟,請大家多多指教!
------
我是剛入門的子弟,請大家多多指教!
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-06-20 21:09:45 IP:192.168.xxx.xxx 未訂閱
試試下面的方式,另一解喔
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ExtCtrls;    type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    ProgressBar1: TProgressBar;
    Timer1: TTimer;
    procedure Form1Create(Sender: TObject);
    procedure StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.Form1Create(Sender: TObject);
begin
  statusbar1.Panels[0].style:=psOwnerDraw;
  progressbar1.Parent:=statusbar1;
end;    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  progressbar1.BoundsRect:=rect;
end;    procedure TForm1.Timer1Timer(Sender: TObject);
begin
  progressbar1.Position:=progressbar1.Position 1;    end;
end.
~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-06-20 21:11:06 IP:192.168.xxx.xxx 未訂閱
引言: 請問一下,為什麼我參照上面的做法,執行程式的時候,一直跳出out of bound() 的視窗,只好用工作管理員把它強制關閉,不知問題是出在那裡? 我是剛入門的子弟,請大家多多指教!
因為您的statusbar未加入panels所以StatusBar1.Panels[0]會有錯 請在statusbar1點兩下Add New Panel ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-08-01 13:59:25 IP:210.71.xxx.xxx 未訂閱
我的方法: 編輯 xxx.dfm 將 如下: object Form1: TForm1   Left = 192   Top = 107   Width = 544   Height = 375   Caption = 'Form1'   Color = clBtnFace   Font.Charset = DEFAULT_CHARSET   Font.Color = clWindowText   Font.Height = -11   Font.Name = 'MS Sans Serif'   Font.Style = []   OldCreateOrder = False   PixelsPerInch = 96   TextHeight = 13   object StatusBar1: TStatusBar     Left = 0     Top = 329     Width = 536     Height = 19     Panels = <>     SimplePanel = False object ProgressBar1: TProgressBar Left = 0 Top = 2 Width = 536 Height = 17 Min = 0 Max = 100 TabOrder = 0 end end end 但是實際的位只需依實際狀況調整
goat
高階會員


發表:53
回覆:130
積分:134
註冊:2002-06-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-08-01 18:20:16 IP:211.23.xxx.xxx 未訂閱
Try it !     unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type TForm1 = class(TForm) StatusBar1: TStatusBar; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } fProgressBar : TProgressBar; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var ProGressBarStyle:longint; begin fProGressBar := TProgressBar.Create(self); fProGressBar.parent := StatusBar1; fProGressBar.Left := 2; fProGressBar.Top := 4; fProGressBar.Height := 13; fProGressBar.Width := StatusBar1.Panels.Items[0].Width -4; fProGressBar.Visible := False; ProGressBarStyle := Getwindowlong(fProgressBar.Handle,GWL_EXSTYLE); ProGressBarStyle := ProGressBarStyle - WS_EX_STATICEDGE; SetwindowLong(fProgressBar.Handle, GWL_EXSTYLE, ProGressBarStyle); end; procedure TForm1.Button1Click(Sender: TObject); var Pos : integer; begin fProgressBar.Visible := True; fProgressBar.Max := 1000; For Pos := 1 to 1000 do fProgressBar.Position := Pos; end; end.
系統時間:2024-03-29 14:58:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!