在工程里定义一个函数showLogin:
procedure ShowLogin();stdcall;
begin
  with Form1.qry1 do
  begin
    Close;
    sql.Clear;
    SQL.Add('select * from login');
    Open;
  end;  
end;然后定义一个启动线程的函数,目的是现实登录记录:
procedure TForm1.show;
var 
  ID: THandle;
begin
  CreateThread(nil, 0, @ShowLogin, nil, 0, ID);
end;然后当点击按钮的时候显示所有的登录记录:
procedure TForm1.btn4Click(Sender: TObject);
begin
  show;
end;
当点击按钮的时候报错,并打开了Delphi7,是什么原因? 我的数据库是MSSQL2000,连接用了ADO的ADOConnection,由TADOQuery连接的.
谁能帮我解答一下我哪里弄错了?

解决方案 »

  1.   

    单独建一个线程单元,ShowLogin在线程里实现
    然后启动线程就行了
      

  2.   


    unit CheckConnetThread;interfaceuses
      Classes, SysUtils,Windows,Forms,IdBaseComponent, IdComponent, IdRawBase, IdRawClient,
      IdIcmpClient,IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL,
       IdTCPConnection, IdTCPClient, IdHTTP;type
      TCheckConnetThread = class(TThread)
      private
        { Private declarations }
        //私有变量  protected
        procedure Execute; override;
      public    constructor Create(CreateSuspended: Boolean);
        destructor Destroy;override;
      end;implementationuses Unit_Public, FastMule_main, UnitOperation;
    constructor TCheckConnetThread.Create(CreateSuspended: Boolean);
    begin
      inherited Create(CreateSuspended);
      FreeOnTerminate:=True;
    end;
    destructor TCheckConnetThread.Destroy;
    begin
      inherited Destroy;
    end;procedure TCheckConnetThread.Execute;
    begin
      with Form1.qry1 do
      begin
        Close;
        sql.Clear;
        SQL.Add('select * from login');
        Open;
      end;  
    end;end.
    启动线程:
    TCheckConnetThread.Create(False);
      

  3.   

    你报什么错了,有没有用CoInitialize