如何在delphi中将tprogressbar放入tstatusbar(place a tprogressbar into a tstatusbar in delphi)

大多数应用程序在应用程序的主窗体中提供一个区域,通常在窗体的底部对齐,用于在运行时显示有关应用程序的信息。...

大多数应用程序在应用程序的主窗体中提供一个区域,通常在窗体的底部对齐,用于在运行时显示有关应用程序的信息。

TStatusBar组件(位于组件调色板的“Win32”页面上)可用于向表单添加状态栏。TStatusBar的Panels属性用于添加、删除或修改状态栏的面板(每个面板由TStatusPanel对象表示)。

TProgressBar(位于组件调色板的“Win32”页面上)显示一个简单的进度条。进度条为用户提供有关应用程序中过程进度的可视反馈。

状态栏中的progressbar

当放置在表单上时,TStatusBar会自动将自身与底部对齐(Align property=alBottom)。最初,它只有一个面板。

以下是如何将面板添加到面板集合(一旦状态栏添加到表单,假设它具有默认的“StatusBar1”名称):

  1. 双击状态栏组件以打开面板编辑器
  2. 右键单击面板编辑器并选择“添加”。这将向面板集合添加一个TStatusPanel对象。再加一个。
  3. 选择第一个面板,并使用对象检查器为​文本属性。
  4. 注意:我们将在第二个面板中放置一个进度条!
  5. 关闭面板编辑器

要在其中一个进度条面板中显示进度条,我们首先需要一个TProgressBar。在表单上删除一个,保留默认名称(ProgressBar1)。

要在状态栏中显示ProgressBar,需要执行以下操作:

  1. 为ProgressBar1的父属性分配StatusBar1。
  2. 将第二个状态栏面板的Style属性更改为“psOwnerDraw”。当设置为psOwnerDraw时,状态面板中显示的内容在运行时通过OnDrawPanel事件处理程序中的代码绘制在状态栏的画布上。与“psOwnerDraw”相反,“psText”的默认值确保文本属性中包含的字符串使用对齐属性指定的对齐方式显示在状态面板中。
  3. 通过添加将进度条对齐到状态栏面板的代码来处理状态栏的OnDrawPanel事件。

以下是完整的代码:

上面讨论的前两个步骤是在表单的OnCreate事件处理程序中完成的。

procedure TForm1.FormCreate(Sender: TObject); var ProgressBarStyle: integer; begin //enable status bar 2nd Panel custom drawing StatusBar1.Panels[1].Style := psOwnerDraw; //place the progress bar into the status bar ProgressBar1.Parent := StatusBar1; //remove progress bar border ProgressBarStyle := GetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE); ProgressBarStyle := ProgressBarStyle - WS_EX_STATICEDGE; SetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE, ProgressBarStyle); end;

注意:TProgressBar控件有一个默认边框,当组件放置在状态栏中时,该边框看起来“丑陋”,因此我们决定删除该边框。

最后,处理StatusBar1的OnDrawPanel事件:

procedure TForm1.StatusBar1DrawPanel( StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); begin if Panel = StatusBar.Panels[1] then with ProgressBar1 do begin Top := Rect.Top; Left := Rect.Left; Width := Rect.Right - Rect.Left - 15; Height := Rect.Bottom - Rect.Top; end; end;

准备就绪。运行项目。。。在按钮的OnClick事件处理程序中使用一些伪代码:

procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin ProgressBar1.Position := 0; ProgressBar1.Max := 100; for i := 0 to 100 do begin ProgressBar1.Position := i; Sleep(25); //Application.ProcessMessages; end; end;

  • 发表于 2021-09-10 20:46
  • 阅读 ( 85 )
  • 分类:编程

你可能感兴趣的文章

如何将媒体文件嵌入delphi可执行文件(rc/.res)(embed media files into a delphi executable (rc/.res))

...可以防止其他人操纵这些加载项文件。 本文将向您展示如何在Delphi可执行文件中嵌入(和使用)声音文件、视频剪辑、动画以及更一般的任何类型的二进制文件。对于最通用的用途,您将看到如何将MP3文件放入Delphi exe中。 ...

  • 发布于 2021-09-06 15:08
  • 阅读 ( 205 )

将项目添加到tpopup delphi菜单

... property Value : string read fValue write fValue;   end; 下面介绍如何将此“扩展”菜单项添加到PoupMenu1: var    menuItemEx : TMenuItemExtended; begin    menuItemEx := TMenuItemExtended.Create(PopupMenu1) ;    menuItemEx.Caption := 'Extended added at ' + TimeToStr...

  • 发布于 2021-09-06 15:10
  • 阅读 ( 178 )

如何在运行时移动和调整控件大小(在delphi应用程序中)(move and resize controls at run time (in delphi applications))

下面介绍如何在应用程序运行时使用鼠标拖动和调整控件大小(在Delphi窗体上)。 运行时的表单编辑器 在窗体上放置控件(可视组件)后,可以调整其位置、大小和其他设计时特性。但是,在某些情况下,您必须允许应用...

  • 发布于 2021-09-10 20:45
  • 阅读 ( 205 )

如何将下拉选择列表放置到dbgrid中(place a drop down pick list into a dbgrid)

下面介绍如何将下拉选择列表放置到DBGrid中。使用DBGrid列的PickList属性,为编辑DBGrid中的查找字段创建视觉上更具吸引力的用户界面。 现在,您已经知道什么是查找字段,以及在Delphi的DBGrid中显示查找字段的选项是什么,现...

  • 发布于 2021-09-10 22:19
  • 阅读 ( 209 )

如何delphidbgrid中的multiselect(multiselect in the delphi dbgrid)

Delphi的DBGrid是数据库相关应用程序中使用最广泛的DB感知组件之一。它的主要目的是使应用程序的用户能够在表格网格中操作数据集中的记录。 DBGrid组件的一个鲜为人知的特性是,可以将其设置为允许多行选择。这意味着用...

  • 发布于 2021-09-10 22:29
  • 阅读 ( 203 )

如何delphidbgrid中的记录排序(sort records in delphi dbgrid)

...用程序,那么您可能每天都在使用它。下面,我们将了解如何向您的数据库应用程序中添加更多用户肯定会喜欢的功能。 按照《Delphi数据库编程初学者指南》中描述的概念,下面的示例使用ADO组件(AdoQuery/AdoTable连接到ADOConnec...

  • 发布于 2021-09-10 22:31
  • 阅读 ( 246 )

如何用delphi显示最顶层的系统模式消息框(display a topmost system modal message box with delphi)

...些操作已完成,或者通常是为了引起用户的注意。 在Delphi中,有几种向用户显示消息的方法。您可以使用RTL中提供的任何现成的消息显示例程,如ShowMessage或InputBox;或者您可以创建自己的对话框(供重用):CreateMessageDialog。...

  • 发布于 2021-09-15 03:45
  • 阅读 ( 238 )

用delphi截取键盘输入

...动我们的战舰。德尔福帮助! 截取键盘输入 大多数Delphi应用程序通常通过特定的事件处理程序处理用户输入,这些事件处理程序使我们能够捕获用户击键并处理鼠标移动。 我们知道焦点是通过鼠标或键盘接收用户输入的...

  • 发布于 2021-09-15 03:46
  • 阅读 ( 164 )

delphi中的基本剪贴板操作(剪切/复制/粘贴)

...贴到应用程序的任何文本或图形的容器。本文将向您展示如何使用TClipboard对象在Delphi应用程序中实现剪切复制粘贴功能。 一般剪贴板 您可能知道,剪贴板一次只能保存一段相同类型的数据进行剪切、复制和粘贴。如果我们...

  • 发布于 2021-09-15 03:52
  • 阅读 ( 289 )

如何在delphi中编辑ini文件(edit ini files in delphi)

INI文件是用于存储应用程序配置数据的基于文本的文件。 尽管Windows建议使用Windows注册表来存储特定于应用程序的配置数据,但在许多情况下,您会发现INI文件为程序访问其设置提供了更快的方式。Windows本身甚至使用INI文件...

  • 发布于 2021-09-15 03:57
  • 阅读 ( 223 )
jRe1h7
jRe1h7

0 篇文章

相关推荐