gpt4 book ai didi

delphi - 带定时器的循环 TGauge

转载 作者:行者123 更新时间:2023-12-02 03:24:09 25 4
gpt4 key购买 nike

我想用仪表替换进度条。这是进度条上的版本:

procedure TForm1.tmr1Timer(sender: TObject);
begin
pb0.Position := (pb0.Position + 1) mod pb0.Max;
end;

这是在测量

procedure TForm1.tmr1Timer(sender: TObject);
begin
gauge.MinValue := 0;
gauge.MaxValue := 100;
gauge.Progress := gauge.Progress + 1;
end;

如何让它每次达到100时重新开始?当我尝试使用按钮进行测试时,我无法使其像进度条上那样循环。

procedure TForm1.btn6Click(sender: TObject);
begin
tmr1.Enabled := not tmr1.Enabled;
begin
gauge.Progress := 0;
tmr1.Enabled := True
end;
if Form1.gauge.Progress = 100 then // is this correct ?
// what to do to make it looping ?
end;

如何在仪表上实现与上面的进度条+计时器相同的功能?

最佳答案

同样的方式。只需使用 TGauge 的不同属性名称即可(并从计时器事件中删除 MinValueMaxValue 的设置):

procedure TForm1.tmr1Timer(sender: TObject);
begin
gauge.Progress := (gauge.Progress + 1) mod (gauge.MaxValue - gauge.MinValue);;
end;

@DavidHeffernan 在评论中指出我的计算永远不会达到完整的 100%值,并提出替代方案:

gauge.Progress := gauge.MinValue + (gauge.Progress + 1) mod 
(gauge.MaxValue - gauge.MinValue + 1);

它有不同的问题:进度显示不从 0 开始,并且以 2 为步长递增。但是,它确实达到了 100% .

正如 @TLama 在评论中指出的,如果 MinValue 以上都不起作用。可以是负数。

<小时/>

如果 MinValue < MaxValue,则此计算没有问题(从 MinValue 循环到 MaxValue,并且两者都可以为负)

gauge.Progress := gauge.MinValue + 
( gauge.Progress + 1 - gauge.MinValue ) mod
( gauge.MaxValue - gauge.MinValue + 1 );

关于delphi - 带定时器的循环 TGauge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20504923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com