<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      狀態條插入可視控件

      [摘要]首先,在FROM中放置一個狀態條控件Status。調節Status.Panels,在其中插入3個狀態條嵌板。把第二個嵌板的參數Style設置成psOwnerDraw。這一點很重要,如果沒有這樣做,將永遠無法顯示文字以外的東西。然后在狀態條的OnDrawPanel事件中插入一行StatusDrawR...
      首先,在FROM中放置一個狀態條控件Status。調節Status.Panels,在其中插入3個狀態條嵌板。把第二個嵌板的參數Style設置成psOwnerDraw。這一點很重要,如果沒有這樣做,將永遠無法顯示文字以外的東西。然后在狀態條的OnDrawPanel事件中插入一行StatusDrawRect:=rect;以記錄參數Style設置成psOwnerDraw的嵌板的坐標。
        第二步,在FROM的Private中申明一個TProgressBar類型的變量Progress。然后在一個菜單的消息響應過程中調用Create方法把它建立起來,再設定狀態條為該進程條的父窗口,進而設定進程條的一些必要參數。例如:最大值、最小值、原點坐標、高度和寬度等。
        最后編譯一下該程序,你就會發現在狀態條中被插入了一個運動著的進程條。
        類似地,你還可以在狀態條中插入其他可視控件,如:按鍵、位圖和動畫控件等等。
      以下是范例程序:
      type
      TForm1 = class(TForm)//定義一個窗口類
      Status: TStatusBar;
      MainMenu1: TMainMenu;
      file1: TMenuItem;
      insertprocressbar1: TMenuItem;
      N1: TMenuItem;
      exit1: TMenuItem;
      procedure FormCreate(Sender: TObject);
      procedure StatusDrawPanel(StatusBar: TStatusBar; Panel:
      TStatusPanel;const Rect: TRect);
      procedure FormDestroy(Sender: TObject);
      procedure exit1Click(Sender: TObject);
      procedure insertprocressbar1Click(Sender: TObject);
      private
      colorindex : integer; BookOpen:Boolean;
      ssbmp:Tbitmap; progress:TProgressbar;
      StatusDrawRect:TRect; //記錄要插入狀態條特技的坐標范圍
      public
      { Public declarations }
      end;
      var
      Form1: TForm1;
      implementation

      {$R *.DFM}

      procedure TForm1.FormCreate(Sender: TObject);
      begin
      end;

      procedure TForm1.StatusDrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
      begin
      StatusDrawRect:=rect; //記錄要實現狀態條特技的坐標范圍
      end;

      procedure TForm1.exit1Click(Sender: TObject);
      begin
      close;
      end;

      procedure TForm1.insertprocressbar1Click(Sender: TObject);
      var i,count:integer;
      staPanleWidth:integer;
      begin
      progress:=TProgressbar.create(form1);
      count:=3000; //進程條的最大值
      staPanleWidth:=status.Panels.Items[2].width;
      //由于進程條的很寬,所以需要改變狀態條嵌板的寬度,這里先保存它的寬度。
      status.Panels.Items[2].width:=150; // 改變寬度
      status.repaint;
      with progress do
      begin
      top:=StatusDrawRect.top;
      left:=StatusDrawRect.left;
      width:=StatusDrawRect.right-StatusDrawRect.left;
      height:=StatusDrawRect.bottom-StatusDrawRect.top;
      //設定進程條的寬度和高度
      visible:=true;
      try
      Parent := status; //該進程條的擁有者為狀態條status
      Min := 0; Max := Count; //進程條的最大和最小值
      Step := 1; //進程條的步長
      for i := 1 to Count do
      Stepit; // 累加進程條
      ShowMessage('現在,進程條將要從內存中被釋放');
      finally
      Free; //釋放進程條
      end; //try
      end; //with
      status.Panels.Items[2].width:=staPanleWidth; //恢復狀態條嵌板的寬度
      end; //begin

      end.


      日韩精品一区二区三区高清