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

📄 exemain.pas

📁 ODAC 5.7.0.28
💻 PAS
字号:
unit ExeMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Ora, StdCtrls, ExtCtrls, Grids, DBGrids, Db, MemDS, DBCtrls, DBAccess, OdacVcl;

type
  TfmExeMain = class(TForm)
    OraSession: TOraSession;
    ConnectDialog: TConnectDialog;
    pnToolBar: TPanel;
    btLoadDLL: TButton;
    btFreeDLL: TButton;
    DBGrid: TDBGrid;
    btConnect: TButton;
    btDisconnect: TButton;
    btOpen: TButton;
    btClose: TButton;
    OraQuery: TOraQuery;
    DBNavigator: TDBNavigator;
    DataSource: TDataSource;
    btShowForm: TButton;
    btHideForms: TButton;
    procedure btLoadDLLClick(Sender: TObject);
    procedure btFreeDLLClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btConnectClick(Sender: TObject);
    procedure btDisconnectClick(Sender: TObject);
    procedure btOpenClick(Sender: TObject);
    procedure btCloseClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btShowFormClick(Sender: TObject);
    procedure btHideFormsClick(Sender: TObject);
  private
    hDLL:HModule;

  public

  end;

  TAssignSession = procedure (Session: TOraSession); cdecl;
  TShowForm = procedure; cdecl;
  THideForms = procedure; cdecl;

var
  fmExeMain: TfmExeMain;

implementation

{$R *.DFM}

procedure TfmExeMain.btLoadDLLClick(Sender: TObject);
var
  AssignSession: TAssignSession;
begin
  if hDLL = 0 then begin
    hDLL := LoadLibrary('OraDLL.dll');
    if hDLL <> 0 then begin
      @AssignSession := GetProcAddress(hDLL, 'AssignSession');
      if @AssignSession <> nil then
        AssignSession(OraSession);
      MessageDlg('DLL is loaded', mtInformation, [mbOk], 0);
    end
    else
      MessageDlg('Cannot load DLL', mtError, [mbOk], 0);
  end;
end;

procedure TfmExeMain.btShowFormClick(Sender: TObject);
var
  ShowForm: TShowForm;
begin
  if hDLL <> 0 then begin
    @ShowForm := GetProcAddress(hDLL, 'ShowForm');
    if @ShowForm <> nil then
      ShowForm;
    SetFocus;
  end
  else
    MessageDlg('DLL is not loaded', mtError, [mbOk], 0);
end;

procedure TfmExeMain.btHideFormsClick(Sender: TObject);
var
  HideForms: THideForms;
begin
  if hDLL <> 0 then begin
    @HideForms := GetProcAddress(hDLL, 'HideForms');
    if @HideForms <> nil then
      HideForms;
  end
  else
    MessageDlg('DLL is not loaded', mtError, [mbOk], 0);
end;

procedure TfmExeMain.btFreeDLLClick(Sender: TObject);
begin
  if hDLL <> 0 then begin
    FreeLibrary(hDLL);
    hDLL := 0;
  end
  else
    MessageDlg('DLL is not loaded', mtError, [mbOk], 0);
end;

procedure TfmExeMain.FormCreate(Sender: TObject);
begin
  hDLL:= 0;
end;

procedure TfmExeMain.btConnectClick(Sender: TObject);
begin
  OraSession.Connect;
end;

procedure TfmExeMain.btDisconnectClick(Sender: TObject);
begin
  OraSession.Disconnect;
end;

procedure TfmExeMain.btOpenClick(Sender: TObject);
begin
  OraQuery.Open;
end;

procedure TfmExeMain.btCloseClick(Sender: TObject);
begin
  OraQuery.Close;
end;

procedure TfmExeMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if hDLL <> 0 then
    FreeLibrary(hDLL);
end;

end.

⌨️ 快捷键说明

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