roots fish die

ikan makan plankton ikan hidup di air ikan butuh air

Rabu, 09 Desember 2009

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]