Application.ProcessMessages使用说明

摘要: Application.ProcessMessages使用说明

application.ProcessMessages的主要作用使程序在循环时能够相应外界事件。

实例程序:

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    dbgrd1: TDBGrid;
    ds1: TDataSource;
    edt1: TEdit;
    lbl1: TLabel;
    Button1: TButton;
    kbm_info: TkbmMemTable;
    kbm_infoid: TIntegerField;
    kbm_infoname: TStringField;
    kbm_infoscore: TIntegerField;
    kbm_inforemark: TStringField;
    Button2: TButton;
    kbm_score: TkbmMemTable;
    kbm_scoreid: TIntegerField;
    kbm_scoreremark: TStringField;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  count, i : Integer;
begin
  inherited;
  try
    kbm_info.Close;
    kbm_info.Open;
    kbm_score.Close;
    kbm_score.Open;
    count := StrToInt(edt1.Text);
    for i := 1 to count do
    begin
      kbm_info.Append;
      kbm_info.FieldByName('id').AsInteger := count;
      kbm_info.FieldByName('name').AsString := '学生' + IntToStr(i);
      kbm_info.FieldByName('score').AsInteger := Random(100);
      kbm_info.Post;

      kbm_score.Append;
      kbm_score.FieldByName('id').AsInteger := count;
      kbm_score.FieldByName('remark').AsString := '随机得分';
      kbm_score.Post
    end;
  finally

  end;

end;

203446_ax8N_2862751
运行程序,填写学生个数,填充数据集按钮产生数据。

procedure TForm1.Button2Click(Sender: TObject);
begin
  inherited;
  kbm_info.First;
  while not kbm_info.Eof do
  begin
    kbm_score.First;
    while not kbm_score.Eof do
    begin
      if kbm_info.FieldByName('id').AsInteger = kbm_score.FieldByName('id').AsInteger then
      begin
        kbm_info.Edit;
        kbm_info.FieldByName('remark').AsString := kbm_score.FieldByName('remark').AsString;
        kbm_info.Post;
        //Application.ProcessMessages(); //试试注释和不注释的效果
        Break;
      end;
      kbm_score.Next;
    end;
    kbm_info.Next;
  end;
  //
end;

application.ProcessMessages()注释时,点击普通循环按钮,拖动窗体,无反应。

application.ProcessMessages()不注释时,点击普通循环按钮,拖动窗体,有反应。拖动下拉框,数据网格显示控件触发数据集滚动,导致游标跳动,出现空格行。
204334_4vP3_2862751原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值