用MDI窗口ADO多线程查询报错
网上看了个ADO线程的帖子
然后把他加入到MDI窗口中来用
子窗口查询后,关闭时跳出这个错误:
system Error code:1400 无效的窗口句柄
control '' has no parent window
如果再建立新窗口会跳出
A component named form1 already exists
然后无法建立
整个MDI关掉后,报这样的错误
exception einvalidpointer in module project1.exe at 00003d39 invalid pointer operation
单元代码是
unit Mdatabas;interfaceuses Classes, ADODB,activex;type TDatabaseThread = class(TThread) private FADODataSet:TADODataSet; FADOQuery:TADOQuery; FADOCommand:TADOCommand; SQLString:string; protected procedure Execute; override; public constructor Create(ADO:TADODataSet;S:String); overload; constructor Create(ADO:TADOQuery;S:String); overload; constructor Create(ADO:TADOCommand;S:String); overload; destructor destroy; end;implementationuses Unit1;{ TDatabaseThread }constructor TDatabaseThread.Create(ADO:TADODataSet;S:String);begin FADODataSet:=ADO; SQLString:=S; inherited Create(False);end;constructor TDatabaseThread.Create(ADO:TADOQuery;S:String);begin FADOQuery:=ADO; SQLString:=S; inherited Create(False);end;constructor TDatabaseThread.Create(ADO:TADOCommand;S:String);begin FADOCommand:=ADO; SQLString:=S; inherited Create(False);end;destructor tDatabaseThread.destroy;begin FADODataSet.Free; FADOQuery.Free; FADOCommand.Free; couninitialize;end;procedure TDatabaseThread.Execute;begin FreeOnTerminate:=True; coinitialize(nil); if FADODataSet<>nil then begin FADODataSet.Close; FADODataSet.CommandType:=cmdText; FADODataSet.CommandText:=SQLString; FADODataSet.Open; end; if FADOQuery<>nil then begin FADOQuery.Close; FADOQuery.SQL.Clear; FADOQuery.SQL.Add(SQLString); FADOQuery.ExecSQL; end; if FADOCommand<>nil then begin FADOCommand.CommandText:=SQLString; FADOCommand.Execute; end; couninitialize; if Terminated then exit;end;end.