ProcessMessages (Delphi)

From RAD Studio Code Examples
Jump to: navigation, search

Description

This example requires two buttons that are long enough to accommodate lengthy captions on a form. When you click the button with the caption Ignore Messages, the code begins to generate a long series of random numbers. If you try to resize the form while the handler is running, nothing happens until the handler is finished. When you click the button with the caption Process Messages, more random numbers are generated, but the application can still respond to a series of events, such as resizing the form and printing text. Note: How quickly these event handlers run depends on the microprocessor of your computer. A message appears on the form informing you when the handler has finished executing.

Code

const magicnumber = 500;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.Caption := 'Ignore Messages';
  Button2.Caption := 'Process Messages';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  I, J: Integer;
  X, Y: Word;
begin
  I := 0;
  J := 0;
  Canvas.TextOut(10, 10, 'The Button1Click handler has started');
  Application.ProcessMessages; // Doing this, you get the message out.
  while I < magicnumber do
  begin
    Randomize;
    while J < magicnumber do
    begin
      Sleep(10);
      Y := Random(J);
      Inc(J);
    end;
    X := Random(I);
    Inc(I);
  end;
  Canvas.TextOut(10, 10, 'The Button1Click handler is finished   ');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  I, J: Integer;
  X, Y: Word;
begin
  I := 0;
  J := 0;
  Canvas.TextOut(10, 10, 'The Button2Click handler has started');
  while I < magicnumber do
  begin
    Randomize;
    while J < magicnumber do
    begin
      Y := Random(J);
      Inc(J);
      Sleep(10);
      Application.ProcessMessages;
    end;
    X := Random(I);
    Inc(I);
  end;
  Canvas.TextOut(10, 10, 'The Button2Click handler is finished   ');
end;

Uses