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

如何在Statusbar中顯示Progressbar和Icon?

尚未結案
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-26 20:20:11 IP:61.185.xxx.xxx 未訂閱
各位先進好!  我想在程式的Statusbar秀出與Winzip類似的風格,可以顯示Progressbar和Icon Q1: 如果   statusbar1.panel[0] 顯示 Progressbar    Statusbar1.panel[1] 顯示 Icon   style皆設為:PsOwnerDraw   如何得到statusbar1.panel[0]和Statusbar1.panel[1]的大小?     Q2:   sentence1,2 的作用是什麼?      Code 如下:   ...        imageFlag:Timage;     progressDrawRect:TRect;    ...     progress:=TprogressBar.create(Form4);     imageFlag:=Timage.create(Form4);     panelWidth:=Statusbar1.panels.items[1].width; //sentence1 WITH imageFlag do begin Top:=ImageDrawRect.top; Left:=ImageDrawRect.Left; width:=ImageDrawRect.Right-ImageDrawRect.Left; Height:=ImageDrawRect.Bottom-ImageDrawRect.Top; visible:=true; parent:=statusbar1; imageFlag.Picture.Bitmap.Handle:=loadbitmap(hinstance,'mainicon'); end; with progress do begin Top:=progressDrawRect.top; Left:=progressDrawRect.Left; width:=progressDrawRect.Right-progressDrawRect.Left; Height:=progressDrawRect.Bottom-progressDrawRect.Top; visible:=true; try parent:=statusbar1; min:=0; Max:=count; step:=1; finally free; end; statusbar1.panels[1].width:=panelwidth; //sentence2 end; ..... procedure TForm4.StatusBar1DrawPanel(StatusBar:TStatusBar;Panel: TStatusPanel;const Rect: TRect); begin // 如何在此得到statusbar1.panel[0]和Statusbar1.panel[1]的大小? // 如果在此設置progressDrawRect:=Rect;可以顯示Progressbar end;
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-27 13:05:54 IP:61.218.xxx.xxx 未訂閱
引言: // 如何在此得到statusbar1.panel[0]和Statusbar1.panel[1]的大小? // 如果在此設置progressDrawRect:=Rect;可以顯示Progressbar
mathewzhao 您好! 試試看可不可行!
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  {動態建立ProgressBar1省略}      if Panel.Index = 0 then begin
     ProgressBar1.Width := Rect.Right - Rect.Left  1;
     ProgressBar1.Height := Rect.Bottom - Rect.Top  1;
     ProgressBar1.PaintTo(StatusBar.Canvas.Handle, Rect.Left, Rect.Top);
  end;
end;
  
procedure TForm1.Button1Click(Sender: TObject);
var
  I: integer;
begin
  for I := ProgressBar1.Min to ProgressBar1.Max do begin
    
    ProgressBar1.Position := I;
    
    StatusBar1.Repaint;
    
    Sleep(50);
  end;      Sleep(500);
 
  ProgressBar1.Position := ProgressBar1.Min;
  StatusBar1.Repaint;
end;
HAVE A NICE DAY FOR YOU 發表人 - axsoft 於 2003/06/27 13:14:15
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-27 21:58:13 IP:218.160.xxx.xxx 未訂閱
1.ProgessBar放入StatusBar上 http://forum.vclxx.org/topic.php?TOPIC_ID=4312&FORUM_ID=3&CAT_ID=2&Topic_Title=%A6p%A6%F3%B1NProgressBar%A5%5B%A4J%A6b%AA%AC%BAA%A6C&Forum_Title=Misc 2.插入小圖案 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=24981 第一個答案你只須將TProgressBar對其你的Panel即可. Good Luck 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-29 20:48:20 IP:61.216.xxx.xxx 未訂閱
在StatusBar中,加入圖示與改變文字顏色 http://www.delphipages.com/tips/thread.cfm?ID=165 用StatusBar1來顯示ProgressBar! 方法: 把ProgressBar放在一個Panel上,在FormCreate中寫 Panel.Parent := StatusBar1,可能還要調整一下位置。 先在視窗上放一個Panel, 1.然後雙擊Statusbar1,新增Statusbar1.Panels[0], 將其Style改為psOwnerDraw 2.然後在FormCreate中寫 Panel1.Parent := StatusBar1; Panel1.Left := StatusBar1.left; Panel1.Top := 0; //若位置太高,可以設定此項,我都設 2 3.你在Panel1上什麼都可以放,包括Progressbar,button等等。 網海無涯,學無止境!
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-22 17:28:04 IP:218.103.xxx.xxx 未訂閱
引言: 1.ProgessBar放入StatusBar上 http://forum.vclxx.org/topic.php?TOPIC_ID=4312&FORUM_ID=3&CAT_ID=2&Topic_Title=%A6p%A6%F3%B1NProgressBar%A5%5B%A4J%A6b%AA%AC%BAA%A6C&Forum_Title=Misc 2.插入小圖案 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=24981 第一個答案你只須將TProgressBar對其你的Panel即可. Good Luck 請問大大 Progress := Progress.Create(Statusbar1); 這樣只可以把progressbar 放statusbar panel 0 , 如果要放到 panel 1 或者以上 , 要怎樣呢? Progress := Progress.Create(Statusbar1.Panels[0]); 這樣是不可以的 請問要怎樣? 我不是高手, 高手是正在銀幕前微笑的人.
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-23 09:31:47 IP:220.135.xxx.xxx 未訂閱
Hi SamSam1230 你好:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Progress:= TProgressBar.Create(Statusbar1);
  Progress.Parent:=Statusbar1;
  Progress.Left:=Statusbar1.Panels.Items[0].Width;
  Progress.Top:=3;
  Progress.Height:=Statusbar1.Height-4;
  Progress.Width:= 100;
  Progress.Smooth:=true;
  Progress.Position:=50;
end;
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
系統時間:2024-11-23 9:01:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!