Open Query With Multi Thread - Delphi
[pas:1:6c1f235cc5]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids, DB, ADODB;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DataSource1: TDataSource;
DataSource2: TDataSource;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
BitBtn1: TBitBtn;
Button1: TButton;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
//Thread class declaration - very simple
TQThread = class(TThread)
private
FQuery: TADOQuery;
protected
procedure Execute; override;
public
constructor Create(Query: TADOQuery);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses DateUtils;
constructor TQThread.Create(Query: TadoQuery);
begin
inherited Create(True); //Create thread in a suspendend state so we can prepare vars
FQuery := Query; //Set up local query var to be executed.
FreeOnTerminate := True; //Free thread when finished executing
Resume;
end;
procedure TQThread.Execute;
begin
FQuery.DisableControls;
FQuery.Open; //Perform the query
FQuery.EnableControls;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
// ujicoba menggunakan query dibuka seperti biasa (sequential)
ADOQuery1.Open;
ADOQuery2.Open;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// ujicoba menggunakan thread
TQThread.Create(ADOQuery1);
TQThread.Create(ADOQuery2);
end;
end.[/pas:1:6c1f235cc5]
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids, DB, ADODB;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DataSource1: TDataSource;
DataSource2: TDataSource;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
BitBtn1: TBitBtn;
Button1: TButton;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
//Thread class declaration - very simple
TQThread = class(TThread)
private
FQuery: TADOQuery;
protected
procedure Execute; override;
public
constructor Create(Query: TADOQuery);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses DateUtils;
constructor TQThread.Create(Query: TadoQuery);
begin
inherited Create(True); //Create thread in a suspendend state so we can prepare vars
FQuery := Query; //Set up local query var to be executed.
FreeOnTerminate := True; //Free thread when finished executing
Resume;
end;
procedure TQThread.Execute;
begin
FQuery.DisableControls;
FQuery.Open; //Perform the query
FQuery.EnableControls;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
// ujicoba menggunakan query dibuka seperti biasa (sequential)
ADOQuery1.Open;
ADOQuery2.Open;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// ujicoba menggunakan thread
TQThread.Create(ADOQuery1);
TQThread.Create(ADOQuery2);
end;
end.[/pas:1:6c1f235cc5]
<< Beranda