RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
TProgressBar.StepIt Method

Advances Position by the amount specified in the Step property.

Pascal
procedure StepIt;
C++
__fastcall StepIt();

Call the StepIt method to increase the value of Position by the value of the Step property. If Step represents the size of one logical step in the process tracked by the progress bar, call Step after each logical step is completed.  

C++ Examples: 

 

/*
This example reads bytes from a file in tenths of the size
of the file. The ProgressBar displays the status of each
1/10th step as it's read into the buffer.  This example
requires a TButton and a TProgressBar control on the form.
*/
#include <stdio.h>     // for FILE, fopen, fstat, fileno, fread and fclose
#include <sys\stat.h>  // for fstat and the stat struct
#include <Math.hpp>    // for Min

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  FILE *F;
  char MyData[2047];
  long BytesRead;

  F = fopen("../about.txt", "r");   // path relative to Debug
                                    // use a file larger than 2048 bytes to make it interesting.
  if (F)
  {
    struct stat statbuf;
    fstat(fileno(F), &statbuf);
    ProgressBar1->Max = statbuf.st_size;
    if (ProgressBar1->Max > 10)
    {
      ProgressBar1->Step = (ProgressBar1->Max)/10;
      ProgressBar1->Step = Min(ProgressBar1->Step, 2047);
    }
    else
      ProgressBar1->Step = ProgressBar1->Max;
    char *DataBuffer = new char[ProgressBar1->Step];
    for (ProgressBar1->Position = 0;
         ProgressBar1->Position < ProgressBar1->Max;
         ProgressBar1->StepIt())  // move the ProgressBar Position using StepIt
    {
      fread(DataBuffer, ProgressBar1->Step, 1, F);
      // Do this or the read will wrap and start over!
      ProgressBar1->Step =
        Min(ProgressBar1->Step, ProgressBar1->Max - ProgressBar1->Position);
    }
    delete DataBuffer;
    fclose(F);
  }
}

 

Delphi Examples: 

{
This example reads bytes from a file in tenths of the size
of the file. The ProgressBar displays the status of each
1/10th step as it's read into the buffer.  This example
requires a TButton and a TProgressBar control on the form.
} 
procedure TForm1.Button1Click(Sender: TObject);
const
  FName = 'about.txt';  // use a file larger than 2048 bytes to make it interesting.
var
  F: File;
  MyData: array[1..2048] of byte;
  BytesRead: LongInt;
begin
  AssignFile(F, FName);
  try
    Reset(F, 1);
    ProgressBar1.Max := FileSize(F);
    if (ProgressBar1.Max > 10) then
    begin
      // amount to move when StepIt method called
      ProgressBar1.Step := ProgressBar1.Max div 10;
      ProgressBar1.Step := Min(ProgressBar1.Step, 2048);
    end
    else
      ProgressBar1.Step := ProgressBar1.Max;
    while (ProgressBar1.Position < ProgressBar1.Max) do
    begin
      // read one Step size chunk of data to buffer
      BlockRead(F, MyData, ProgressBar1.Step, BytesRead);
      // move the ProgressBar Position using StepIt
      ProgressBar1.StepIt; // move by Step amount
      // Do this or the read will wrap and start over!
      ProgressBar1.Step :=
          Min(ProgressBar1.Step, ProgressBar1.Max - ProgressBar1.Position);

    end;
  finally;
    CloseFile(F);
  end;
end;

 

Copyright(C) 2008 CodeGear(TM). All Rights Reserved.
What do you think about this topic? Send feedback!