維基副本鏡像站

這是 pascal.chat 維基的鏡像站。編輯、歷史紀錄與登入請到該處。

KOL-CE/zh TW

한국어 · English · Français · Русский · 中文(中国) · 中文(台灣)

介紹

KOL-CE是由Vladimir Kladov 開發的元件,在其他平台上為KOL跟MCK兩組套件,現在則是將之移植到Free Pascal跟Lazarus上使用,關於它的授權,請參見: wxWindow函式庫授權.

KOL-CE可以建立非常精簡的Win32/WinCE圖形介面程式(如果專案只包含一個空的視窗的話,建置出來的程式碼大約只占40KB而已)。

MCK則是讓KOL-CE專案使用的一組Lazarus套件,KOL-CE的圖形介面就是靠MCK來達成的。

原本KOL-CE只是計劃把KOL移植給WinCE使用而已,但後來開發的時候決定要把Win32的許多功能保留下來,並讓FPC開發WinCE應用程式能夠更順利。原本KOL是為Delphi設計的,當時在FPC上面運作並不順,而原始的MCK則是完全不能在Lazarus上面使用的。

基本需求

能支援的平台

下載

請從這裡下載最新版的KOL-CE

您也可以從SVN下載最新出爐的KOL-CE原始碼,連結如下: https://kol-ce.svn.sourceforge.net/svnroot/kol-ce/trunk

安裝


如果您正在使用Lazarus 0.25版或更新的版本,則您就需要先加入DisableFakeMethods這個設定,重新編譯Lazarus,接著才能安裝MCK套件。

步驟如下:

  1. 執行Lazarus.
  2. 點選選單項目: Tools > Configure "Build Lazarus"...
  3. 在Quick Build Options分頁上,點選Clean Up + Build all項目。
  4. 開啟Advanced Build Options分頁,並在Options這個對話框裡面加入-dDisableFakeMethods這個設定字串。
  5. 點選Build按鍵以重新建置Lazarus。

  1. 下載KOL-CE的原始碼,並將之放在您的硬碟裡(當然要解壓縮)。
  2. 執行Lazarus並點選選單項目Components > Open package file (.lpk),然後尋找到MCK套件所在的目錄,並選擇MirrorKOLPackage.lpk這個檔案。
  3. 套件視窗此時就會跳出來了,請按下Install按鍵。
  4. Lazarus會將MCK套件進行編譯,然後重新執行Lazarus IDE。
  5. Lazarus IDE重新出現後,KOL分頁就會在元件盤上面出現了。

附註: 如果您沒有在元件盤上面看到KOL分頁的話,請把該視窗的高度拉大一點即可,您會看到元件盤的分頁標籤變成兩排,KOL分頁標籤就會出現在第二排。(如上面的螢幕截圖所示)

MCK套件的升級非常簡單,請直接用新版的KOL-CE原始碼把舊版的覆蓋掉,再次開啟MCK套件(MirrorKOLPackage.lpk),然後按下Install按鍵,重新編譯套件就行了。

使用MCK

建立MCK專案

  1. 啟動Lazarus並點選表單來新增一個應用程式專案:File > New...。
  2. 新增專案以後不要急! 千萬不要在這個時候放任何元件上去,請先把專案存檔,點選目錄選項: File > Save All,然後選擇您要存放專案檔案的目錄即可。

請注意!該專案的所有檔案,都必須存放在同一個目錄裡面。您可以隨時變更表單的單元檔檔名,但請不要變更專案的名稱,就用原來的Project1.lpi。

  1. 請拖拉一個TKOLProject元件放到表單上面。
  2. 請設定ProjectDest這個屬性,來變更MCK專案的名稱(不用包含路徑喔)。如果您輸入了MyKOLProg,那麼您的MCK專案名稱就會自動變成MyKOLProg.lpi,而產生出來的執行檔,也會被命名為MyKOLProg.exe。
    |ProjectDest property
  3. 請把TKOLForm這個元件拖放到表單上面。
  4. 把目前的專案存起來。
  5. 請開啟剛剛您在ProjectDest屬性內設定的專案名稱, (在剛剛的例子裡面,應該是MyKOLProg.lpi,應該可以在同一個目錄裡面找到。然後,您就可以把project1.*給刪掉了,以後不會再用到這些檔案了。
  6. 跟您的新KOL/MCK專案熟悉一下吧。(調整參數,放TKOL相關元件,編譯,執行,偵錯等等) 祝您玩的高興啦!

新增一個表單

  1. 點選目錄選項: File > New form
  2. 把新表單跟專案存放在同一個目錄裡面。(如果專案檔已經存檔了的話,沒存檔的話請先把專案檔存檔)
  3. 把TKOLForm元件拖拉到表單上面來。
  4. 請確認在專案的主表單上面,已經有擺放了TKOLApplet這個元件。
  5. 如果AutoBuild這個屬性已經設定為關閉,請點選主表單上面的TKOLProject元件,並雙擊它的屬性Build就可以建置該專案了,如果您雙擊Build沒有動靜的話,請按alt+Tab將視窗的焦點移到別的視窗上面,您就會發現有所動作了。

撰寫程式碼

請別使用RTL/FCL/LCL相關的單元,由其是SysUtils, Classes, Form這些單元,您需要的函式,應該在KOL, Windows, Messages這三個單元檔裡面找到,或者是由您自行撰寫的。 當您在專案內撰寫程式碼的時候,請記得要放在事件處理函式內。您也可以自行撰寫程式碼,但不要動到程式原始碼的開始部分,也就是LCL表單的宣告部分。 不要更改自動產生的inc檔案,請記得,您在專案裡面寫的程式碼,必須同時相容於LCL跟KOL,當使用LCL建置的時候,宣告部分會使用LCL的相關單元檔,專案會變成Win32相容的應用程式,而使用KOL建置的時候,則會使用KOL的相關單元檔,建置出來的則是WinCE相容的應用程式。

重點

為了解決KOL跟LCL對關鍵字的衝突: LCL.Self跟KOL.@Self,所以要特別使用Form這個欄位,在LCL裡面,TKOLForm元件的Form屬性,將會回傳Self這個屬性,也就是表單本身的意思,而在KOL裡面Form: PControl則是物件的屬性之一,包含了表單元件。也因為這一點,要變更表單的屬性,就要這麼寫:

pascal
Form.Caption := 'Hello!';

(原來的寫法,是寫成Caption := 'Hello!';即可,當在使用LCL對本專案進行編譯的時候,這樣是完全沒問題的,但以KOL編譯時則會出錯) 但上述討論的關鍵字Form只能使用到表單這個屬性,無法使用到表單上面的控制項。您要使用子控制項跟表單的事件處理函式時,請依照原來的方式即可,例如: Button1.Caption := 'OK';

text
Button1Click(Form);

在執行時期動態建立表單

在執行時期,同一個表單是可以建立出多個實體的,只要把表單的屬性”AutoCreate”設定成不要自動建立,然後在需要的時候再透過程式碼來建立表單即可。要動態建立表單,請使用全域函式NewForm1:

pascal
TempForm1 := NewForm1( Applet );

要讓這個動作能夠執行,請別在建立表單實體的時候使用單元檔裡面的全域變數來承接建立出來的表單,除非您知道您為何要那麼作。

WinCE

設定

arm-wince target 您需要在您的系統中安裝Win32版本的arm-wince交叉編譯器,以建立WinCE的應用程式,請從這裡下載。

要編譯arm-wince的應用程式,您必須先設定專案的編譯器屬性,請點選選單項目: Project > Compiler options...,點選Code分頁,並把target platform改變為arm-wince,如附圖所示。

附註: 在編譯您的WinCE應用程式時,IDE可能會回報以下的錯誤訊息:

text
Compiling resource KOL-CE.rc
arm-wince-windres.exe: no resources
KOL.PAS(57901) Error: Error while linking
KOL.PAS(57901) Fatal: There were 1 errors compiling module, stopping

此時,您需要編輯Windows的環境變數PATH,把Win32平台FPC的編譯器路徑加進去。
如果您不知道要加入哪個路徑,請點選Lazarus選單項目: Environment options,然後看compiler path這個欄位的資料就是了。
別變動Lazarus裡面的PATH,離開Lazarus.
用滑鼠右鍵在”我的電腦”圖示上面點擊,選擇目錄裡的’’’內容’’’,再點選內容視窗裡面的進階分頁,再點選環境變數這個按鍵就可以編輯PATH這個環境變數了。

提示與註記

已知的問題

說明文件

實際用KOL-CE製作的應用程式

相關連結

歷史與聯繫

請將您遇到的問題透過這個SourceForge的網址進行回報: http://sourceforge.net/projects/kol-ce/


From the Free Pascal wiki, page "KOL-CE/zh TW", as it stood on 2021-04-29 after a change by Seenkao, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

版本3,最後由WikiArchive於修改。