如何实现单击一个按钮,程序循环生成随机数,单击另外一个按钮停止,就像电视上抽手机号一样??

解决方案 »

  1.   

    循环时使用    Application.ProcessMessages;
    就不影响另一个按钮的OnClick事件了。
      

  2.   

    用application.processmessages  在程序执行期间让其他控件能响应消息 
      

  3.   

    unit main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TfrmMain = class(TForm)
        edtNum: TEdit;
        btnStart: TButton;
        btnStop: TButton;
        procedure btnStartClick(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure edtNumMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure btnStopClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      frmMain: TfrmMain;
      StartFlag:bool;
    implementation{$R *.dfm}procedure TfrmMain.btnStartClick(Sender: TObject);
     var num:integer;begin
     StartFlag:=True;
     while StartFlag do
     begin
      randomize;
      num:=Random(100000000);
      if num>9999999 then
      edtNum.Text:=IntToStr(num);
      Application.ProcessMessages;
     end; 
    end;procedure TfrmMain.FormShow(Sender: TObject);
    begin
     btnStart.SetFocus;
    end;procedure TfrmMain.edtNumMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
     btnStart.SetFocus;
    end;procedure TfrmMain.btnStopClick(Sender: TObject);
    begin
     StartFlag:=False;
    end;end.