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

DELPHI基礎教程:動態鏈接庫編程(二)[2]

2022-06-13   來源: Delphi編程 

   利用DLLs實現窗體重用的一般步驟

  利用DLLs實現窗體重用的步驟是

  在集成開發環境(IDE)中按自己的需要設計一個窗體

  編寫一個用於輸出的函數或過程在該函數或過程中設計的窗體被實例化

  重復步驟直到完成所有重用窗體的設計

  打開工程文件進行修改以適應生成 dll文件的需要

  (把保留字program設為library;

  (從uses子句中去掉Forms單元

  (移去beginend之間的所有代碼

  (在uses子句下begin…end塊之前添加保留字exprotsexports 後是輸出函數名或過程名

  編譯生成DLLs文件

  在其它應用程序中調用重用窗體

  重用窗體的調用同一般DLLs函數或過程的調用完全一致不再贅述讀者可參看下面的例子

   窗體重用實例

  下面我們通過一個具體的實例來說明窗體重用的設計過程我們在一個名為passformdll 的文件中儲存了一個口令設置窗口和一個口令檢查窗口而後在一個Delphi 編寫的程序和一個VB編寫的程序中進行調用事實證明這種方法是完全可行的

   窗體重用DLLs的設計

  窗體重用DLLs的設計依照()中介紹的步驟進行DLLs中的兩個窗體 SetPassWordForm和GetPassWordForm分別用於設置和檢查口令它們的設計界面如圖所示

  窗體類TSetPassWordForm定義了兩個數據成員Verified和PassWord用於記錄口令確認狀態和設置的口令TSetPassWordForm的定義如下

  type

  TSetPassWordForm = class(TForm)

  Label: TLabel;

  Edit: TEdit;

  OKBtn: TBitBtn;

  CancelBtn: TBitBtn;

  procedure FormCreate(Sender: TObject)

  procedure EditKeyPress(Sender: TObject; var Key: Char)

  private

  { Private declarations }

  Verified: Boolean;

  public

  { Public declarations }

  PassWord: PChar;

  end;

  窗口生成時對數據成員和部件狀態進行初始化

  procedure TSetPassWordFormFormCreate(Sender: TObject)

  begin

  Verified := False;

  PassWord := StrAlloc(

  OKBtnEnabled := False;

  LabelCaption := Please Input PassWord:;

  end;

  按鈕OKBtn在程序啟動時Enabled屬性設置為False直到口令被正確設置後Enabled屬性才恢復為True這樣就保證了只有口令被正確設置後口令設置窗口才能正常關閉否則只能按Cancel按鈕取消

  在口令設置代碼單元中定義了一個輸出函數SetPassWord用於生成口令設置窗口並返回設置的口令

  function SetPassWord(PWord: PChar) Boolean;

  var

  SetPassWordForm: TSetPassWordForm;

  begin

  Result := False;

  SetPassWordForm := TSetPassWordFormCreate(Application)

  try

  with SetPasswordForm do

  if ShowModal = mrOK then

  begin

  StrCopy(PWordStrUpper(Password))

  Result := True;

  end;

  finally

  SetPasswordFormFree;

  end;

  end;

  口令成功設置把PassWord的值拷貝給PWord輸出並返回True應該注意的是由於 PWord本身就是指針類型指向一個字符串的地址因而雖然PWord用於輸出但在參數表中仍為傳值參數而不是傳址參數另外調用函數StrCopy要求PWord在傳入前已分配內存否則會導致一個一般保護錯try…finally用於保護窗口所占用內存資源在任何情況下都能正常釋放讀者可參看第十二章

[]  []  []  []  


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