查看: 33|回复: 0

delphi等待动画

[复制链接]

1

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-10-28
发表于 2022-8-13 10:17:00 | 显示全部楼层 |阅读模式

delphi等待动画

首先要在网上下载等待的GIF文件。

unit wait;
/// <author>cxg 2022-8-12</author>
interface

uses
  Vcl.Imaging.GIFImg,  System.SysUtils,
   Vcl.Graphics, Vcl.Controls, forms,
   Vcl.ExtCtrls, Vcl.StdCtrls;

function playWait(own: TForm): TPanel;
procedure stopWait(pnl: TPanel);

implementation

function playWait(own: TForm): TPanel;
begin
  var pnl: TPanel := TPanel.Create(own);
  pnl.BevelOuter := bvNone;
  pnl.Parent := own;
  pnl.AutoSize := True;
  pnl.Left := Screen.Width div 2;
  pnl.Top := Screen.Height div 2 - 150;
  pnl.Show;
  var img: TImage := TImage.Create(pnl);
  img.Parent := pnl;
  img.Stretch := true;
  img.AutoSize := True;
  img.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + '1.gif');
  TGIFImage(img.Picture.Graphic).Animate := True;
  Result := pnl;
end;

procedure stopWait(pnl: TPanel);
begin
  FreeAndNil(pnl);
end;

end.
procedure Tfgoods.chaxunExecute(Sender: TObject);
begin
  var finished: Boolean := False;
  ADOQuery1.Close;
  ADOQuery1.DisableControls;
  var pnl: TPanel := playwait(self);
  TThread.CreateAnonymousThread(
    procedure
    begin
      CoInitialize(nil);
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      var sql: string;
      var v: string;
      if edtId.Text <> '' then
      begin
        sql := 'select * from t_goods where goodsid = :goodsid';
        ADOQuery1.SQL.Add(sql);
        v := edtId.Text;
        ADOQuery1.Parameters.ParamValues['goodsid'] := v;
      end
      else if edtPy.Text <> '' then
      begin
        sql := 'select * from t_goods where isnull(py,'''') like :py';
        ADOQuery1.SQL.Add(sql);
        v := '%' + edtPy.Text + '%';
        ADOQuery1.Parameters.ParamValues['py'] := v;
      end
      else if edtName.Text <> '' then
      begin
        sql := 'select * from t_goods where isnull(goodsname,'''') like :goodsname';
        ADOQuery1.SQL.Add(sql);
        v := '%' + edtName.Text + '%';
        ADOQuery1.Parameters.ParamValues['goodsname'] := v;
      end
      else if edtBarcode.Text <> '' then
      begin
        sql := 'select * from t_goods where isnull(barcode,'''') = :barcode';
        ADOQuery1.SQL.Add(sql);
        v := edtBarcode.Text;
        ADOQuery1.Parameters.ParamValues['edtBarcode'] := v;
      end
      else
      begin
        sql := 'select * from t_goods';
        ADOQuery1.SQL.Add(sql);
      end;
      ADOQuery1.Open;
      finished := true;      //thread execute finished
      CoUninitialize;
    end).Start;

  while True do    //wait for thread execute finished
  begin
    if finished then
    begin
      ADOQuery1.EnableControls;
      stopWait(pnl);
      Break;
    end;
    Application.ProcessMessages;
    TThread.Sleep(1);
  end;
end;

  

 

  

 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部