可以呀。在execute里写就行了。

解决方案 »

  1.   

    应用程序的焦点???是什么意思?可以在TThread中使用ADO连接SQL server,在TThread中建立ADO对象
      

  2.   

    unit mythread;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Grids, DBGrids, Db, DBTables,ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Database1: TDatabase;
        Query1: TQuery;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Button2: TButton;
        Timer1: TTimer;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}type
      tmythread = class(TThread)
      private
        queryform: tform1;
        procedure querydataset;
        procedure show;
        { Private declarations }
      protected
        procedure Execute; override;
      public
        constructor create(aqueryform : tform1);
      end;procedure TForm1.Button1Click(Sender: TObject);
    begin
       form1.color:=random(255);
       //TQueryThread.Create(QueryForm);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var queryform:tform1;
    begin
        Tmythread.Create(QueryForm);
    end;procedure tmythread.Execute;begin
      { Place thread code here }
      with queryform do
      begin
        database1.connected := true;
        with query1 do
        begin
          close;
          sql.clear;
          sql.add('select * from customer');
          open;
        end;    synchronize(show);
        synchronize(querydataset);
      end;
    end;
    procedure tmythread.show;
    begin
      showmessage('connect successfully!');
    end;constructor tmythread.create(aqueryform : tform1);
    begin
      queryform := aqueryform;
      freeonterminate:= true;
      inherited create(false);end;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
       button1.onclick(nil);
    end;procedure tmythread.querydataset;
    begin
      with queryform do
      begin
        with query1 do
        begin
          while not query1.eof do
          begin
            next;
          end;
        end;
      end;
      
    end;end.
      

  3.   

    楼上的给位老兄:
        这个一个比较难的问题,并不是用Thread就能简单实现的问题。分析一下:
    我们一般用ADOQuery等VCL控件连接SQL Server,而VCL是不支持多线程的,TThread
    也只是用同步技术让主线程去执行访问VCL控件的多线程代码。问题是,我们的
    问题就是出在VCL运行时,应用程序失去焦点。所以用TThread是不能解决问题的。
    以前,我用DLL访问MySQL时,用多线程是可以的,不知道能不能用DLL实现访问SQL SERVER
      

  4.   

    哈哈,有意思,谢谢指点!gaoql(雪淞)!
    留个联系方法吧,我觉得我该从你那里学点东西
    [email protected]