⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit2.pas

📁 《Delphi7编程100例》代码,书配资料
💻 PAS
字号:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DBTables, DB;

type
  TForm2 = class(TForm)
    DBGrid1: TDBGrid;
    Memo1: TMemo;
    DataSource1: TDataSource;
    Database1: TDatabase;
    Query1: TQuery;
    Session1: TSession;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure NewQuery(QryNum:integer;Qry:TStrings;const Alias,UserName,Password:string);

type
  TDBQueryThread=class(TThread)
  private
    FQuery:TQuery;
    FDataSource:TDataSource;
    FQueryException:Exception;
    procedure HookUpUI;
    procedure QueryError;
  protected
    procedure Execute;override;
  public
    constructor Create(Q:TQuery;D:TDataSource);virtual;
end;
var
  Form2: TForm2;

implementation

{$R *.dfm}


constructor TDBQueryThread.Create(Q:TQuery;D:TDataSource);
begin
  inherited Create(True);
  FQuery:=Q;
  FDataSource:=D;
  FreeOnTerminate:=True;
  Resume;
end;
procedure TDBQueryThread.Execute;
begin
  try
    FQuery.Open;
    Synchronize(HookUpUI);
  except
    FQueryException:=ExceptObject as Exception;
    Synchronize(QueryError);
  end;
end;
procedure TDBQueryThread.HookUpUI;
begin
  FDataSource.DataSet:=FQuery;
end;
procedure TDBQueryThread.QueryError;
begin
  Application.ShowException(FQueryException);
end;
procedure NewQuery(QryNum:integer;Qry:TStrings;const Alias,UserName,Password:string);
begin
  with TForm2.Create(Application) do
  begin
    Session1.SessionName:=Format('Sess%d',[QryNum]);
    with Database1 do
    begin
      DatabaseName:=Format('DB%d',[QryNum]);
      AliasName:=Alias;
      SessionName:=Session1.SessionName;
      Params.Values['User Name']:=UserName;
      Params.Values['Password']:=Password;
    end;
    with Query1 do
    begin
      DatabaseName:=Database1.DatabaseName;
      SessionName:=Session1.SessionName;
      SQL.Assign(Qry);
    end;
    Memo1.Lines.Assign(Qry);
    Show;
    TDBQueryThread.Create(Query1,DataSource1);
  end;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -