【问题标题】:Delphi marquee progress barDelphi 字幕进度条
【发布时间】:2019-08-06 12:50:39
【问题描述】:

我有一个查询在单独的线程中运行,需要一段时间来处理,因为用户目前无法知道后台正在执行某些操作我想创建一个进度条,如第三个进度条这张图片:

我查看了其他问题/答案,看起来我想要一个字幕进度条,我尝试将我的进度条设置为字幕,但它没有做任何事情。进度条属性如下:

MarqueeInterval = 10
Max = 100
Min = 50
Orientation = pbHorizontal
Position = 50
Smooth = True
State = pbsNormal
Step = 10
Style = pbstMarquee

我做错了什么或需要改变吗?

我的启动代码如下:

procedure TFormMain.SetupForm;
begin
  // Connect to the database
  ConnectToDatabase;

  // Initially hide combo box
  ShowHideComboBox(False);

  ListViewDataType.Columns[0].Width := -1;

  UsingOwnTemplate := False;

  // Initial page is the welcome page
  PageControl.ActivePage := TabWelcome;
end;

procedure TFormMain.ConnectToDatabase;
var
  FullPath : String;
  CompanyName: String;
begin
  // Create the database connection
  DBConnection := TFDConnection.Create(nil);

  // Get the folder path
  FullPath := GetCurrentDir;

  DatabasePath := FullPath;

  // Setup the database connection
  with DBConnection do begin
    DriverName := 'MSAcc';
    Params.Add(Format('Database=%s', [DatabasePath]));
    Params.Add('StringFormat=UNICODE');
    Connected := True;
  end;
end;

【问题讨论】:

  • @TomBrunberg 是的,这是给 Vcl 的。
  • 我在您的代码中看不到任何与另一个线程相关的内容。我只看到在主线程中使用的数据库组件。这些组件根本不能跨线程边界使用。因此,要么您向我们发布了错误的无关代码,要么您实际上是在主线程而不是另一个线程中运行查询。

标签: delphi progress-bar


【解决方案1】:

放置一个TProgressBar 并将其Style 属性设置为pbstMarquee。 应该是全部了,如果不起作用,请确保:

  1. 主线程没有被阻塞(查询是真的在另一个线程中执行还是有其他原因导致主线程被阻塞?)

  2. 项目编译时启用了“启用运行时主题”选项(否则,pbstMarquee 将不起作用)

【讨论】:

  • Bingo,我已经启用了用户运行时主题,它运行良好!谢谢。
  • @WiliamCardoso 这通常在新项目中默认启用。
  • @JerryDodge 我想几周前我在搞砸它,因为我认为它对程序的外观做了一些事情并且从未改变它:/
  • @WiliamCardoso "我认为它对程序的外观有所影响" - 它确实通过启用 Windows 自己的内置 UI 主题,这涉及启用更新实现新 UI 控件的 ComCtrl32 库版本,例如 ProgressBar 的选取框样式。
【解决方案2】:

只需将TProgressBar 放在您的表单上,然后使用对象检查器将Style 属性设置为pbstMarquee。就是这样!

【讨论】:

  • 好的,我刚刚在一个新项目上尝试过,它工作正常,所以它一定是我的项目:(。进度条被放在我原来项目的 PageControl TTab 上会这样吗做些什么来阻止动画可见?
  • 不,页面控件应该不是问题。
  • 你确定你的计算真的是在一个单独的线程(不是主/GUI线程)中执行的吗?因为如果您不小心在主/GUI 线程中执行了计算,GUI 将不会重新绘制自身或响应用户输入。
  • 是的,我确定。当您选择一个它将读取的 excel 文件时,查询开始,但是即使程序启动(在您有任何选择文件之前),进度条也不会动画。
  • @WiliamCardoso:一次删除应用程序的一部分,直到您达到一个只有进度条的基本上空的 VCL 应用程序的状态。
猜你喜欢
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
相关资源
最近更新 更多