線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2330
推到 Plurk!
推到 Facebook!

Plugin 設計方式 -- 使用 Package

 
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-08-25 22:03:36 IP:211.23.xxx.xxx 未訂閱
程式 Plugin 設計 -- 使用 Delphi 2. 希望達到目標       主 Form    
    -------------------------------- 
   |                                |
   |   ---       ----------------   |
   |  |   |     |                |  |
   |  |   |     |                |  |
   |  |   |     |                |  |
   |  |   |     |                | <--- TPanel:顯示 Frame 的地方
   |  |   |     |                |  |
   |  |   |     |                |  |
   |   ---       ----------------   |
   |    ^                           |
    ----|--------------------------- 
        |
         -- TListBox:用來顯示載入 Plugin 裡的 Frames
  
程式執行時,會先尋找同目錄下的 Plugins 並載入,顯示在左邊的 ListBox 當按下左邊的 Frame 時,右邊會出現該 Frame 按下 Button Process(在 TPanel 上方) 時,會呼叫該 Frame 的自定procedure Process 3. 設計流程 (1) 設計 BaseFrame Package 因為我們會在 Frame 加上我們的 procedure,所以 Plugin 不能直接使用 TFrame,而必須自己先作一個基底 Frame 來給 Plugin 繼承。 (2) 設計 Plugin 在 Require 地方加入 BaseFrame.dcp (靜態載入 BaseFrame Package) 設計 Frame (繼承 TfreBase) 因為 Plugin 要動態載入,所以沒有 .dcp 提供資訊,故使用 RegisterClass 註冊 TFre1,讓我們可以使用 RTTI. initialization RegisterClass(TFre1); end. (3) 主程式 在 Project - Options -Packages 打勾 Build with runtime packages 先定義三個變數 PackageList: TStringList <- 記錄 Package 的 Handle AClass: TPersistentClass <- 取得 Plugin Frame 的 Class AFrame: TfreBaseClass <- BaseFrame Class 的 reference 在 FormCreate 地方 尋找所有 .bpl 檔案 LoadPackage 進來 把 Handle 記錄在 PackageList 裡 GetClass Frame 進來 Create Frame 在 FormDestroy 地方 UnloadPackage 所有 Handle -- Skyer
------
--
Regards,
Skyer
附加檔案:20756_TestPlugin.zip
系統時間:2024-04-29 18:50:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!