ÄãµÄλÖãºÈí¼þÓë¹âÅÌ>
״̬Ìõ²åÈë¿ÉÊӿؼþ
2000-03-19 00:00:00¡¤ -¡¤¿ªÌì±ÙµØ

×ÏÈ,ÔÚ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.


¡¾·¢±íÆÀÂÛ¡¿¡¾¹Ø±Õ´°¿Ú¡¿