熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

經典案例 財務管理系統(8)[2]

2022-06-13   來源: Delphi編程 

  該窗體所要完成的任務是調用該dll的程序向窗體輸入要鏈接的數據表的表名當數據表鏈接成功後可以通過雙擊DBGrid的某欄向調用該窗體的程序返回表中的某一項值並關閉窗體

  () 為該窗體的設置處理代碼如下

  unit dllForm;

  interface

  uses

  Windows Messages SysUtils Variants Classes Graphics Controls Forms

  Dialogs DB Grids DBGrids ADODB;

  type

  TdllSec = class(TForm)

  ADOTable: TADOTable;

  DBGrid: TDBGrid;

  DataSource: TDataSource;

  procedure DBGridDblClick(Sender: TObject);

  procedure FormShow(Sender: TObject);

  private

  { Private declarations }

  public

  { Public declarations }

  end;

  //此函數負責取得當前應用程序的句柄並顯示窗體它是供外部調用的函數

  function showdllform(Ahandle:Thandle;Acaption:string;tablename:string):string;stdcall;

  var

  //用此變量向調用dll的程序返回值

  resultstr:string;

  implementation

  {$R *dfm}

  function showdllform(Ahandle:Thandle;Acaption:string;tablename:string):string;stdcall;

  var

  newform:Tdllsec;

  begin

  //取得句柄

  applicationHandle:=Ahandle;

  //建立窗體

  newform:=TdllsecCreate(application);

  newformCaption:=Acaption+(雙擊選擇);

  //建立數據庫鏈接

  newformADOTableTableName:=tablename;

  newformADOTableActive:=true;

  //顯示窗體

  try

  newformShowModal;

  //返回雙擊所選擇的結果

  result:=resultstr;

  //釋放該窗體

  finally newformFree;

  end;

  end;

  //雙擊選擇數據欄返回數值

  procedure TdllSecDBGridDblClick(Sender: TObject);

  begin

  resultstr:=dbgridFields[]Text;

  close;

  end;

  //設置表寬度

  procedure TdllSecFormShow(Sender: TObject);

  var

  i:integer;

  begin

  for i:= to dbgridFieldCount do

  dbgridColumns[i]Width:=;

  end;

  end

  此時按F鍵運行該工程的話就會得到如圖所示的信息

  圖 直接運行dll得到的信息

  這是因為調試dll時需要一個宿主程序如果編譯後直接運行就會得到這個提示解決這一問題需要寫一個調用這個dll的exe程序編譯後將它的路徑填到Run | Parameters菜單的Host app 輸入條中

  但是實際上如果直接按F或編譯允許DLL工程後即便是彈出了上面的對話框若讀者浏覽該工程所儲存目錄就可以發現已經生成了一個secdll動態鏈接庫這就是我們在下面的程序中要用到的DLL就可以直接調用了

[]  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25024.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.