如何通过将progressBar的一部分设置为空来更改progressBar的起始位置,例如0 - > 50,并从50开始进度(绿色),那么有没有具体方法呢?
答案 0 :(得分:5)
进度条的位置由其 < / p> <击>
Position
属性决定。因此,假设进度条的限制为0
和100
,并且您希望从中间开始,请将Position
设置为50
。
您尝试更改Min
,但我怀疑您不了解Min
和Max
做了什么。它们仅定义Position
属性的比例。因此,当Position
等于Min
时,进度条为空,当Position
等于Max
时,进度条已满。 Position
和Min
之间Max
的值指定了部分完整的进度。
在数学上,进度条的完成比例由以下公式给出:
(Position-Min) / (Max-Max)
因此, Min
和Max
只允许您定义一个方便的比例,以指定比例完成。例如,如果您的进度自然表示为百分比,则可以将Min
设置为0
,将Max
设置为100
。或者,如果您要测量文件传输的进度,可以将Min
设置为0
,将Max
设置为要传输的总字节数。
在评论中,您可以通过声明:
来改进问题我想将进度条的第一个中间设置为空,例如0 - &gt; 50,并从50开始进度(绿色)。
使用普通的香草进度条是不可能的。进度条从空白填满。
使用标准控件无法找到您要查找的用户界面。您需要自己绘制进度条,而不是非常难以完成。如果您希望它看起来像本机控件,您可以使用主题API来绘制它。
答案 1 :(得分:2)
您可以使用两个正常进度条构建复合进度条。
将它们放在一起,使左边的一个(PBarEmpty)与右边的重叠(PBarActive)。右边的宽度是左边的一半。
使用以下代码设置位置(0..100)。
procedure TForm1.SetProgress(progress: Integer);
begin
if (progress = 0) then
begin
PBarEmpty.Width := 2*PBarActive.Width;
PBarActive.Position := 0;
end
else begin
if PBarEmpty.Width <> PBarActive.Width then
PBarEmpty.Width := PBarActive.Width;
PBarActive.Position := progress;
end;
end;
答案 2 :(得分:0)
我认为您无法使用任何标准VCL组件执行此操作。
TMS TAdvProgressBar(不是TAdvProgress组件)允许您在进度条上设置级别。例如,0级最高可达50%,1级最高可达70%等。每个级别可以有不同的背景颜色。
我刚试过这里,我将Level0颜色设置为白色,然后将1级百分比设置为50,将颜色设置为石灰。将stacked属性设置为True会产生这种效果: