⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threadquery.pas

📁 产品信息系统!关于产品基础信息的系统!功能强大!
💻 PAS
字号:
unit ThreadQuery;

interface

uses
  Classes,ADODB,DB,Dialogs,SysUtils,DBGridEh,StdCtrls,Forms,Messages,Windows;

const WM_MyMsg1 = WM_User + 201;

type
  TThreadQuery = class(TThread) //声明线程类
  private
    FQuery:TAdoQuery;     //线程类中的查询组件
    FDataSource:TDataSource; //线程类中与查询组件相关的数据感知组件
    FDataSource1:TDataSource;
    Ffrm_handle:HWND;
    procedure ConnectDataSource;//线程类中连接数据查询组件与数据感知组件的方法。
    procedure ConnectDataSource1;
    procedure ConnectDataSource2;
    { Private declarations }
  protected
    procedure Execute; override;
  public
    constructor Create(Query:TADOQuery;frm_handle:HWND);virtual;
  end;

implementation
    uses cx_hint,ThreadHint;

{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure TThreadQuery.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ TThreadQuery }

constructor TThreadQuery.Create(Query:TADOQuery;frm_handle:HWND);
begin
        FQuery:=Query;
        //FDataSource:=DataSource;
        //FDataSource1:=DataSource1;
        Ffrm_handle:=frm_handle;
        inherited Create(False); //参数为False,立即运行;为True,挂起。
        FreeOnTerminate:=True;//如果设为False,线程运行完后不会自动删除,如果为True,线程运行完后会自动删除。
end;

procedure TThreadQuery.Execute;
var
    i:integer;
begin
    try
        FQuery.Close;
        //Synchronize(ConnectDataSource);
        try
            FQuery.Open;
        except
            FQuery.ExecSQL;//打开查询
        end;
        Synchronize(ConnectDataSource1);//线程同步
    except
        Synchronize(ConnectDataSource2);
    end;

  { Place thread code here }
end;

procedure TThreadQuery.ConnectDataSource;
begin
    //dm_pas.dm_frm.qry_ddcx_dno.Parameters.ParamValues['date1']:=FormatDateTime('yyyy-MM-dd',print_pas.print_frm.DateTimePicker1.DateTime);
    //dm_pas.dm_frm.qry_ddcx_dno.Parameters.ParamValues['date2']:=FormatDateTime('yyyy-MM-dd',print_pas.print_frm.DateTimePicker2.DateTime+1);
end;

procedure TThreadQuery.ConnectDataSource1;
var
    skip:integer;
begin
    //ThreadHint.FWinControl.Free;
    //dm_pas.dm_frm.ADOQuery1.Recordset:=dm_pas.dm_frm.qry_ddcx_dno.Recordset;

    //dm_pas.dm_frm.ADOQuery2.Clone(dm_pas.dm_frm.qry_ddcx_dno);
    //dm_pas.dm_frm.ADOQuery3.Recordset:=dm_pas.dm_frm.ADOQuery2.Recordset;

    //main_pas.mainform_ddcx.DBGridEh1.DataSource:=nil;
    //main_pas.mainform_ddcx.DBGridEh1.DataSource:=dm_pas.dm_frm.DataSource1;

    //main_pas.mainform_ddcx.DBGridEh2.DataSource:=nil;
    //main_pas.mainform_ddcx.DBGridEh2.DataSource:=dm_pas.dm_frm.DataSource3;
    //ShowMessage('查询完毕!!!');
    PostMessage(Ffrm_handle,WM_MyMsg1,0,0);
end;

procedure TThreadQuery.ConnectDataSource2;
begin
    ThreadHint.FWinControl.Free;
    ShowMessage('查询异常!!!');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -