uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Grids, DBGrids, ADODB, DBTables, ComCtrls,
ExtCtrls, Menus,Activex;type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet2: TTabSheet;
DBGrid2: TDBGrid;
TabSheet3: TTabSheet;
DataSource2: TDataSource;
DataSource3: TDataSource;
Button2: TButton;
DBGrid3: TDBGrid;
MainMenu1: TMainMenu;
File1: TMenuItem;
hread1: TMenuItem;
StatusBar1: TStatusBar;
Timer1: TTimer;
Open1: TMenuItem;
New1: TMenuItem;
N1: TMenuItem;
Close1: TMenuItem;
Exit1: TMenuItem;
Memo1: TMemo;
Label1: TLabel;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
Button1: TButton;
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TThreadQuery = class(TThread)
private
FQuery: TADOQuery;
FDataSource: TDataSource;
procedure ConnectDataSource;
Protected
procedure Execute; override;
public
constructor Create(Query: TADOQuery;DataSource: TDataSource); virtual;
destructor Destroy; override;
end;
var
Form1: TForm1;
Q1,Q2: TThreadQuery;
implementation{$R *.dfm}
procedure TThreadQuery.ConnectDataSource;
begin
FDataSource.DataSet := FQuery;
end;
procedure TThreadQuery.Execute;
begintry
CoInitialize(nil);
FQuery.Open;
Synchronize(ConnectDataSource);
except
ShowMessage('Query Error');
end;
end;
constructor TThreadQuery.Create(Query: TADOQuery; DataSource: TDataSource);
begin
inherited Create(true);
FQuery := Query;
FDataSource := DataSource;
FreeOnTerminate :=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Q1 := TThreadQuery.Create(adoQuery1, DataSource2);
if Q1.Suspended then Q1.Resume else Q1.Suspend;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
statusbar1.Panels[0].Text:=timetostr(now);
end;procedure TForm1.Exit1Click(Sender: TObject);
begin
application.Terminate
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Q2 := TThreadQuery.Create(adoQuery2, DataSource3);
if Q2.Suspended then Q2.Resume else Q2.Suspend;
end;
destructor TThreadQuery.Destroy;
begin
CoUnInitialize;
inherited;
end;
end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Grids, DBGrids, ADODB, DBTables, ComCtrls,
ExtCtrls, Menus,Activex;type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet2: TTabSheet;
DBGrid2: TDBGrid;
TabSheet3: TTabSheet;
DataSource2: TDataSource;
DataSource3: TDataSource;
Button2: TButton;
DBGrid3: TDBGrid;
MainMenu1: TMainMenu;
File1: TMenuItem;
hread1: TMenuItem;
StatusBar1: TStatusBar;
Timer1: TTimer;
Open1: TMenuItem;
New1: TMenuItem;
N1: TMenuItem;
Close1: TMenuItem;
Exit1: TMenuItem;
Memo1: TMemo;
Label1: TLabel;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
Button1: TButton;
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TThreadQuery = class(TThread)
private
FQuery: TADOQuery;
FDataSource: TDataSource;
procedure ConnectDataSource;
Protected
procedure Execute; override;
public
constructor Create(Query: TADOQuery;DataSource: TDataSource); virtual;
destructor Destroy; override;
end;
var
Form1: TForm1;
Q1,Q2: TThreadQuery;
implementation{$R *.dfm}
procedure TThreadQuery.ConnectDataSource;
begin
FDataSource.DataSet := FQuery;
end;
procedure TThreadQuery.Execute;
begintry
CoInitialize(nil);
FQuery.Open;
Synchronize(ConnectDataSource);
except
ShowMessage('Query Error');
end;
end;
constructor TThreadQuery.Create(Query: TADOQuery; DataSource: TDataSource);
begin
inherited Create(true);
FQuery := Query;
FDataSource := DataSource;
FreeOnTerminate :=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Q1 := TThreadQuery.Create(adoQuery1, DataSource2);
if Q1.Suspended then Q1.Resume else Q1.Suspend;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
statusbar1.Panels[0].Text:=timetostr(now);
end;procedure TForm1.Exit1Click(Sender: TObject);
begin
application.Terminate
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Q2 := TThreadQuery.Create(adoQuery2, DataSource3);
if Q2.Suspended then Q2.Resume else Q2.Suspend;
end;
destructor TThreadQuery.Destroy;
begin
CoUnInitialize;
inherited;
end;
end.
解决方案 »
- delphi7初学
- indy10.5.5使用IdTCPServer接收中文消息显示乱码,请帮忙
- 监控数据库更新
- 急急急!请问BDE+SQL Link,如何连接使用windows集成验证的SQL Server2000,谢谢!
- 如何在界面上画出这样的表格,高手们进来看看吧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 如何写程序测试SQL服务器是否存在?急急急....
- 关于DBLookupComboBox的问题
- 详细的delphi的热键
- 请问:为何工程执行是出现"Insufficient memory for this operation"的错误提示?
- 在DELPHI中怎么把一个DOUBLE类型的实数转化为STRING 类型?
- 高难度问题,用户自己怎么能自己配置ADOCONNECTION参数来连接数据库!
- 剪贴板的问题
begin
inherited Create(true);
CoInitialize(nil); //进入CoInitialize初始化先
FQuery := Query;
FDataSource := DataSource;
FreeOnTerminate :=false;
end;