首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

二级DELPHI控件——状态条插入可视控件

2009-04-26 
DELPHI控件

    在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.

 

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行