如何將ProgressBar放在StatusBar上 |
|
ReaderFrank
一般會員 發表:1 回覆:4 積分:1 註冊:2002-04-24 發送簡訊給我 |
請教各位前輩: 小弟用以下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 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
sanwin
一般會員 發表:20 回覆:60 積分:16 註冊:2002-06-03 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
試試下面的方式,另一解喔
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 發送簡訊給我 |
|
wenjung
一般會員 發表:21 回覆:61 積分:21 註冊:2002-04-29 發送簡訊給我 |
我的方法: 編輯 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 發送簡訊給我 |
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.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |