KOL-CE/zh TW: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: KOL-CE/zh TW
| Old | New | Line | |
|---|---|---|---|
| 1 | + | ## 介紹 | |
| 2 | + | ||
| 3 | + | KOL-CE是由[Vladimir Kladov](http://f0460945.xsph.ru/rindex.htm) 開發的元件,在其他平台上為KOL跟MCK兩組套件,現在則是將之移植到Free Pascal跟Lazarus上使用,關於它的授權,請參見: [wxWindow函式庫授權](http://www.opensource.org/licenses/wxwindows.php). | |
| 4 | + | ||
| 5 | + | KOL-CE可以建立非常精簡的Win32/WinCE圖形介面程式(如果專案只包含一個空的視窗的話,建置出來的程式碼大約只占40KB而已)。 | |
| 6 | + | ||
| 7 | + | MCK則是讓KOL-CE專案使用的一組Lazarus套件,KOL-CE的圖形介面就是靠MCK來達成的。 | |
| 8 | + | ||
| 9 | + | 原本KOL-CE只是計劃把KOL移植給[[WinCE port|WinCE]]使用而已,但後來開發的時候決定要把Win32的許多功能保留下來,並讓FPC開發WinCE應用程式能夠更順利。原本KOL是為Delphi設計的,當時在FPC上面運作並不順,而原始的MCK則是完全不能在Lazarus上面使用的。 | |
| 10 | + | ||
| 11 | + | ### 基本需求 | |
| 12 | + | ||
| 13 | + | - Win32平台上的Free Pascal編譯器2.2.0版或更新的版本。 | |
| 14 | + | - Win32平台上的arm-wince交叉編譯器2.2.0或更新的版本(開發[[WinCE port|WinCE]]程式時會用到). | |
| 15 | + | - Win32平台上的Lazarus 0.9.23版或更新的版本。 | |
| 16 | + | ||
| 17 | + | ### 能支援的平台 | |
| 18 | + | ||
| 19 | + | - 所有32位元的Windows作業系統,從Windows 95到Vista都行。 | |
| 20 | + | - 使用[[WinCE port|Windows CE]]為作業系統的PocketPC跟手機。 | |
| 21 | + | ||
| 22 | + | ## 下載 | |
| 23 | + | ||
| 24 | + | 請從[這裡](http://sourceforge.net/project/showfiles.php?group_id=188451)下載最新版的KOL-CE | |
| 25 | + | ||
| 26 | + | 您也可以從SVN下載最新出爐的KOL-CE原始碼,連結如下: <https://kol-ce.svn.sourceforge.net/svnroot/kol-ce/trunk> | |
| 27 | + | ||
| 28 | + | ## 安裝 | |
| 29 | + | ||
| 30 | + | ------------------------------------------------------------------------ | |
| 31 | + | ||
| 32 | + | 如果您正在使用Lazarus 0.25版或更新的版本,則您就需要先加入**`DisableFakeMethods`**這個設定,重新編譯Lazarus,接著才能安裝MCK套件。 | |
| 33 | + | ||
| 34 | + | 步驟如下: | |
| 35 | + | ||
| 36 | + | 1. 執行Lazarus. | |
| 37 | + | 2. 點選選單項目: **Tools \> Configure "Build Lazarus"...** | |
| 38 | + | 3. 在**Quick Build Options**分頁上,點選**Clean Up + Build all**項目。 | |
| 39 | + | 4. 開啟**Advanced Build Options**分頁,並在**Options**這個對話框裡面加入**`-dDisableFakeMethods`**這個設定字串。 | |
| 40 | + | 5. 點選**Build**按鍵以重新建置Lazarus。 | |
| 41 | + | ||
| 42 | + | ------------------------------------------------------------------------ | |
| 43 | + | ||
| 44 | + | <figure> | |
| 45 | + | <img src="MirrorKOLPackage.png" title="MCK package" /> | |
| 46 | + | <figcaption>MCK package</figcaption> | |
| 47 | + | </figure> | |
| 48 | + | ||
| 49 | + | 1. 下載KOL-CE的原始碼,並將之放在您的硬碟裡(當然要解壓縮)。 | |
| 50 | + | 2. 執行Lazarus並點選選單項目**Components \> Open package file (.lpk)**,然後尋找到**MCK**套件所在的目錄,並選擇**`MirrorKOLPackage.lpk`**這個檔案。 | |
| 51 | + | 3. 套件視窗此時就會跳出來了,請按下**Install**按鍵。 | |
| 52 | + | 4. Lazarus會將MCK套件進行編譯,然後重新執行Lazarus IDE。 | |
| 53 | + | 5. Lazarus IDE重新出現後,KOL分頁就會在元件盤上面出現了。 | |
| 54 | + | ||
| 55 | + | <figure> | |
| 56 | + | <img src="KOLComponents.png" title="|KOL 元件盤分頁" /> | |
| 57 | + | <figcaption>|KOL 元件盤分頁</figcaption> | |
| 58 | + | </figure> | |
| 59 | + | ||
| 60 | + | 附註: 如果您沒有在元件盤上面看到KOL分頁的話,請把該視窗的高度拉大一點即可,您會看到元件盤的分頁標籤變成兩排,KOL分頁標籤就會出現在第二排。(如上面的螢幕截圖所示) | |
| 61 | + | ||
| 62 | + | MCK套件的升級非常簡單,請直接用新版的KOL-CE原始碼把舊版的覆蓋掉,再次開啟MCK套件(**`MirrorKOLPackage.lpk`**),然後按下**Install**按鍵,重新編譯套件就行了。 | |
| 63 | + | ||
| 64 | + | ## 使用MCK | |
| 65 | + | ||
| 66 | + | ### 建立MCK專案 | |
| 67 | + | ||
| 68 | + | <figure> | |
| 69 | + | <img src="MCKForm.png" title="MCK form" /> | |
| 70 | + | <figcaption>MCK form</figcaption> | |
| 71 | + | </figure> | |
| 72 | + | ||
| 73 | + | 1. 啟動Lazarus並點選表單來新增一個應用程式專案:**File \> New...**。 | |
| 74 | + | 2. 新增專案以後不要急! 千萬不要在這個時候放任何元件上去,請先把專案存檔,點選目錄選項: **File \> Save All**,然後選擇您要存放專案檔案的目錄即可。 | |
| 75 | + | ||
| 76 | + | 請注意!該專案的所有檔案,都必須存放在同一個目錄裡面。您可以隨時變更表單的單元檔檔名,但請不要變更專案的名稱,就用原來的`Project1.lpi`。 | |
| 77 | + | ||
| 78 | + | 1. 請拖拉一個**`TKOLProject`**元件放到表單上面。 | |
| 79 | + | 2. 請設定**`ProjectDest`**這個屬性,來變更MCK專案的名稱(不用包含路徑喔)。如果您輸入了`MyKOLProg`,那麼您的MCK專案名稱就會自動變成`MyKOLProg.lpi`,而產生出來的執行檔,也會被命名為`MyKOLProg.exe`。\ | |
| 80 | + |  | |
| 81 | + | 3. 請把**`TKOLForm`**這個元件拖放到表單上面。 | |
| 82 | + | 4. 把目前的專案存起來。 | |
| 83 | + | 5. 請開啟剛剛您在**`ProjectDest`**屬性內設定的專案名稱, (在剛剛的例子裡面,應該是`MyKOLProg.lpi`,應該可以在同一個目錄裡面找到。然後,您就可以把`project1.*`給刪掉了,以後不會再用到這些檔案了。 | |
| 84 | + | 6. 跟您的新KOL/MCK專案熟悉一下吧。(調整參數,放TKOL相關元件,編譯,執行,偵錯等等) 祝您玩的高興啦! | |
| 85 | + | ||
| 86 | + | ### 新增一個表單 | |
| 87 | + | ||
| 88 | + | 1. 點選目錄選項: **File \> New form** | |
| 89 | + | 2. 把新表單跟專案存放在同一個目錄裡面。(如果專案檔已經存檔了的話,沒存檔的話請先把專案檔存檔) | |
| 90 | + | 3. 把**`TKOLForm`**元件拖拉到表單上面來。 | |
| 91 | + | 4. 請確認在專案的主表單上面,已經有擺放了**`TKOLApplet`**這個元件。 | |
| 92 | + | 5. 如果`AutoBuild`這個屬性已經設定為關閉,請點選主表單上面的**`TKOLProject`**元件,並雙擊它的屬性**`Build`**就可以建置該專案了,如果您雙擊**`Build`**沒有動靜的話,請按alt+Tab將視窗的焦點移到別的視窗上面,您就會發現有所動作了。 | |
| 93 | + | ||
| 94 | + | ### 撰寫程式碼 | |
| 95 | + | ||
| 96 | + | 請別使用RTL/FCL/LCL相關的單元,由其是SysUtils, Classes, Form這些單元,您需要的函式,應該在KOL, Windows, Messages這三個單元檔裡面找到,或者是由您自行撰寫的。 當您在專案內撰寫程式碼的時候,請記得要放在事件處理函式內。您也可以自行撰寫程式碼,但不要動到程式原始碼的開始部分,也就是LCL表單的宣告部分。 不要更改自動產生的inc檔案,請記得,您在專案裡面寫的程式碼,必須同時相容於LCL跟KOL,當使用LCL建置的時候,宣告部分會使用LCL的相關單元檔,專案會變成Win32相容的應用程式,而使用KOL建置的時候,則會使用KOL的相關單元檔,建置出來的則是WinCE相容的應用程式。 | |
| 97 | + | ||
| 98 | + | ### 重點 | |
| 99 | + | ||
| 100 | + | 為了解決KOL跟LCL對關鍵字的衝突: `LCL.Self`跟`KOL.@Self`,所以要特別使用`Form`這個欄位,在LCL裡面,`TKOLForm`元件的`Form`屬性,將會回傳`Self`這個屬性,也就是表單本身的意思,而在KOL裡面`Form: PControl`則是物件的屬性之一,包含了表單元件。也因為這一點,要變更表單的屬性,就要這麼寫: | |
| 101 | + | ||
| 102 | + | `Form.Caption := 'Hello!'; ` | |
| 103 | + | ||
| 104 | + | (原來的寫法,是寫成Caption := 'Hello!';即可,當在使用LCL對本專案進行編譯的時候,這樣是完全沒問題的,但以KOL編譯時則會出錯) 但上述討論的關鍵字`Form`只能使用到表單這個屬性,無法使用到表單上面的控制項。您要使用子控制項跟表單的事件處理函式時,請依照原來的方式即可,例如: Button1.Caption := 'OK'; | |
| 105 | + | ||
| 106 | + | `Button1Click(Form);` | |
| 107 | + | ||
| 108 | + | ### 在執行時期動態建立表單 | |
| 109 | + | ||
| 110 | + | 在執行時期,同一個表單是可以建立出多個實體的,只要把表單的屬性”AutoCreate”設定成不要自動建立,然後在需要的時候再透過程式碼來建立表單即可。要動態建立表單,請使用全域函式`NewForm1`: | |
| 111 | + | ||
| 112 | + | `TempForm1 := NewForm1( Applet );` | |
| 113 | + | ||
| 114 | + | 要讓這個動作能夠執行,請別在建立表單實體的時候使用單元檔裡面的全域變數來承接建立出來的表單,除非您知道您為何要那麼作。 | |
| 115 | + | ||
| 116 | + | ## WinCE | |
| 117 | + | ||
| 118 | + | #### 設定 | |
| 119 | + | ||
| 120 | + |  您需要在您的系統中安裝Win32版本的arm-wince交叉編譯器,以建立WinCE的應用程式,請從[這裡](http://www.freepascal.org/download.var)下載。 | |
| 121 | + | ||
| 122 | + | 要編譯arm-wince的應用程式,您必須先設定專案的編譯器屬性,請點選選單項目: **Project \> Compiler options...**,點選**Code**分頁,並把target platform改變為arm-wince,如附圖所示。 | |
| 123 | + | ||
| 124 | + | **附註:** 在編譯您的WinCE應用程式時,IDE可能會回報以下的錯誤訊息: | |
| 125 | + | ||
| 126 | + | `Compiling resource KOL-CE.rc`\ | |
| 127 | + | `arm-wince-windres.exe: no resources`\ | |
| 128 | + | `KOL.PAS(57901) Error: Error while linking`\ | |
| 129 | + | `KOL.PAS(57901) Fatal: There were 1 errors compiling module, stopping` | |
| 130 | + | ||
| 131 | + | 此時,您需要編輯Windows的環境變數**PATH**,把Win32平台FPC的編譯器路徑加進去。\ | |
| 132 | + | 如果您不知道要加入哪個路徑,請點選Lazarus選單項目: **Environment options**,然後看compiler path這個欄位的資料就是了。\ | |
| 133 | + | **別變動Lazarus裡面的PATH,離開Lazarus**.\ | |
| 134 | + | 用滑鼠右鍵在”我的電腦”圖示上面點擊,選擇目錄裡的’’’內容’’’,再點選內容視窗裡面的**進階**分頁,再點選**環境變數**這個按鍵就可以編輯**PATH**這個環境變數了。 | |
| 135 | + | ||
| 136 | + | #### 提示與註記 | |
| 137 | + | ||
| 138 | + | - 要建立大多數Pocket PC上的全螢幕應用程式,請別變更表單的位置跟大小,如果表單的大小跟位置被變動了,則該表單就會看起來像是有標題欄的對話視窗,當然也包含標題欄的關閉程式按鈕。在MCK裡面把TKOLForm元件的**defaultSize**跟**defaultPosition**這兩個屬性設定為”True”就能讓表單全螢幕顯示了。 | |
| 139 | + | ||
| 140 | + | #### 已知的問題 | |
| 141 | + | ||
| 142 | + | - 下列兩個元件目前不支援: RichEdit, TrayIcon. | |
| 143 | + | - 目前只支援gsVertical, gsHorizontal 這兩種panel樣式。 | |
| 144 | + | ||
| 145 | + | ## 說明文件 | |
| 146 | + | ||
| 147 | + | - 您可以從KOL官方網站找到KOL跟MCK的官方文件跟相關資訊: <http://kolmck.ru> | |
| 148 | + | - 請務必閱讀MCK目錄裡面的**KOLmirrorReadme.txt**這個檔案,這是MCK的說明文件。 | |
| 149 | + | ||
| 150 | + | ## 實際用KOL-CE製作的應用程式 | |
| 151 | + | ||
| 152 | + | - [XP Mobile密碼管理員](http://www.cp-lab.com/windows-mobile.html) | |
| 153 | + | - [ChARMeD 反組譯程式](http://blog.carolos.za.net/2007/05/charmed-for-pocket-pc-beta-030.html) | |
| 154 | + | - [WMWifiRouter無線網路路由器](http://www.jongma.org/WMWifiRouter/) | |
| 155 | + | ||
| 156 | + | ## 相關連結 | |
| 157 | + | ||
| 158 | + | - [KOL&MCK官方網站](http://f0460945.xsph.ru/rindex.htm) | |
| 159 | + | - SourceForge 網站上的KOL-CE網頁 <http://sourceforge.net/projects/kol-ce/> | |
| 160 | + | - [[WinCE port/zh TW|將WinCE移植給Free Pascal用]] | |
| 161 | + | - [[Windows CE Interface/zh TW|Windows CE程式介面]] | |
| 162 | + | - [[Windows CE Development Notes/zh TW|Windows CE開發筆記]] | |
| 163 | + | ||
| 164 | + | ## 歷史與聯繫 | |
| 165 | + | ||
| 166 | + | 請將您遇到的問題透過這個SourceForge的網址進行回報: <http://sourceforge.net/projects/kol-ce/> | |
| 167 | + | ||
| 168 | + | - 初版正體中文翻譯,由[元智大學](http://www.yzu.edu.tw/)[資訊傳播學系](http://www.infocom.yzu.edu.tw/)兼任講師[張子仁 (Dennies Chang)](mailto://dennies@ms4.hinet.net)製作。 - 2008/1/8 User:Dennies | |
| 169 | + | ||
| 170 | + | --- | |
| 171 | + | *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](/wiki-contact).* | |
| 172 | + | Category: zh |
