问题如题所示!各位大虾!能否给点意见?

解决方案 »

  1.   

    for i := 0 to 100000 do
    begin
      Application.ProcessMessages;
    end;
      

  2.   

    如果是响应所有的事件,可以用Application.ProcessMessages,但如果是特定的事件就有点难了。
      

  3.   

    Application.ProcessMessages
    用多线程。
      

  4.   

    定义一个全局的变量(表示是否结束循环),循环判断此变量的值,在循环中用
    Application.ProcessMessages在其它的操作中为此变量赋值
      

  5.   

    循环状态时响应特定的事件好象不太可能。要不你就把这个事件写到循环里头,要不你就返回程序的焦点Application.ProcessMessages。多线程也可以,但如果线程占用CPU太多时也会当掉的,其他的事件也不能响应。因为是循环么。
      

  6.   

    响应特定的事件? 用Application.ProcessMessages在特定的事件里 判断一个BOOL量(例如FLAG) 为真 就执行这个特定的事件 而Application.ProcessMessages也响应其他的事件 在其他的事件里也判断这个BOOL量 没别的好办法了  关注一下
      

  7.   

    放一个memo和两个button在窗体上unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      flag:boolean;
      isbusy:boolean=false;
      implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      i,aa:integer;
      
    begin
      aa:=0;
      if not isbusy then
      begin
         i:=0;    isbusy := true;
        flag:=false;
        Memo1.Lines.Clear;
        while i>=0 do
        begin
          Application.ProcessMessages;
          if flag then
          begin
            isbusy:=true;
            break;
          end;
          memo1.Lines.Add(inttostr(i));
          i:=i+1;
          aa:=i;
        end;
      end
      else
      begin
        flag:=false;
        while aa>=0 do
        begin
          Application.ProcessMessages;
          if flag then
          begin
            isbusy:=true;
            break;
          end;
          memo1.Lines.Add(inttostr(aa));
          aa:=aa+1;
        end;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      flag:=true;
    end;end.