Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: ProgressBar unnötig animiert

  Alt 9. Nov 2017, 12:49
Gibt nen kleinen Trick, der die Animation verhindert - einfach eine Position weiter und dann zurück.

Edit: doh, ganz den Kommentar von Daniel übersehen, der erwähnte das ja schon

Entweder mit nem kleinen Helper, oder per Interposer Klasse oder irgendwie anders.
Delphi-Quellcode:
type
  TProgressBarHelper = class helper for TProgressBar
  private
    function GetPosition: Integer;
    procedure SetPosition(const Value: Integer);
  public
    procedure StepIt;
    property Position: Integer read GetPosition write SetPosition;
  end;

{ TProgressBarHelper }

function TProgressBarHelper.GetPosition: Integer;
begin
  Result := inherited Position;
end;

procedure TProgressBarHelper.SetPosition(const Value: Integer);
begin
  if Value <> inherited Position then
  begin
    if Value >= Max then
    begin
      Max := Max + 1;
      inherited Position := Max;
      Max := Max - 1;
    end
    else
    begin
      inherited Position := Value + 1;
      inherited Position := Value;
    end;
  end;
end;

procedure TProgressBarHelper.StepIt;
begin
  Position := Position + Step;
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 9. Nov 2017 um 12:51 Uhr)
  Mit Zitat antworten Zitat