delphi等待动画

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.
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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;

  

 

  

 

posted @   delphi中间件  阅读(839)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-08-13 DataSet Serialize
2020-08-13 cross socket tcp client demo
2017-08-13 购买咏南中间件
点击右上角即可分享
微信分享提示