Sign in Join
Wiki copytemporary

KOL-CE/zh CN: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## 介绍
22
33KOL-CE是由[Vladimir Kladov](http://f0460945.xsph.ru/rindex.htm) 开发的元件,在其他平台上为KOL跟MCK两组套件,现在则是将之移植到Free Pascal跟Lazarus上使用,关于它的授权,请参见: [wxWindow函式库授权](http://www.opensource.org/licenses/wxwindows.php).
44
55KOL-CE可以建立非常精简的Win32/WinCE图形界面程序(如果项目只包含一个空的视窗的话,建置出来的程序码大约只占40KB而已)。
66
77MCK则是让KOL-CE项目使用的一组Lazarus套件,KOL-CE的图形界面就是靠MCK来达成的。
88
99原本KOL-CE只是计划把KOL移植给[[WinCE port|WinCE]]使用而已,但后来开发的时候决定要把Win32的许多功能保留下来,并让FPC开发WinCE应用程序能够更顺利。原本KOL是为Delphi设计的,当时在FPC上面运作并不顺,而原始的MCK则是完全不能在Lazarus上面使用的。
1010
1111### 基本需求
1212
1313- Win32平台上的Free Pascal编译器2.2.0版或更新的版本。
1414- Win32平台上的arm-wince交叉编译器2.2.0或更新的版本(开发[[WinCE port|WinCE]]程序时会用到).
1515- Win32平台上的Lazarus 0.9.23版或更新的版本。
1616
1717### 能支援的平台
1818
1919- 所有32位元的Windows作业系统,从Windows 95到Vista都行。
2020- 使用[[WinCE port|Windows CE]]为作业系统的PocketPC跟手机。
2121
2222## 下载
2323
2424请从[这里](http://sourceforge.net/project/showfiles.php?group_id=188451)下载最新版的KOL-CE
2525
2626您也可以从SVN下载最新出炉的KOL-CE原始码,连结如下: <https://kol-ce.svn.sourceforge.net/svnroot/kol-ce/trunk>
2727
2828## 安装
2929
3030------------------------------------------------------------------------
3131
3232如果您正在使用Lazarus 0.25版或更新的版本,则您就需要先加入**`DisableFakeMethods`**这个设定,重新编译Lazarus,接着才能安装MCK套件。
3333
3434**注意:** KOL-CE 2.80.2 及以后版本不再需要定义 `DisableFakeMethods` 。
3535
3636如果您以前使用 KOL-CE 2.80.1 或更旧版本。在安装 MCK 包之前您需要**去掉** `DisableFakeMethods` 定义并重编译Lazarus。否则**event handlers(事件处理程序)无法工作**!
3737
3838步骤如下:
3939
40401. 执行Lazarus.
41412. 点选选单项目: **Tools \> Configure "Build Lazarus"...**
42423. 在**Quick Build Options**分页上,点选**Clean Up + Build all**项目。
43434. 开启**Advanced Build Options**分页,并在**Options**这个对话框里面加入**`-dDisableFakeMethods`**这个设定字符串。
44445. 点选**Build**按键以重新建置Lazarus。
4545
4646------------------------------------------------------------------------
4747
4848![](/wiki-images/2/2e/MirrorKOLPackage.png)
4949
50501. 下载KOL-CE的原始码,并将之放在您的硬盘里(当然要解压缩)。
51512. 执行Lazarus并点选选单项目**Components \> Open package file (.lpk)**,然后寻找到**MCK**套件所在的目录,并选择**`MirrorKOLPackage.lpk`**这个档案。
52523. 套件视窗此时就会跳出来了,请按下**Install**按键。
53534. Lazarus会将MCK套件进行编译,然后重新执行Lazarus IDE。
54545. Lazarus IDE重新出现后,KOL分页就会在元件盘上面出现了。
5555
5656![](/wiki-images/d/d1/KOLComponents.png)
5757
5858附注: 如果您没有在元件盘上面看到KOL分页的话,请把该视窗的高度拉大一点即可,您会看到元件盘的分页标签变成两排,KOL分页标签就会出现在第二排。(如上面的荧幕截图所示)
5959
6060MCK套件的升级非常简单,请直接用新版的KOL-CE原始码把旧版的覆盖掉,再次开启MCK套件(**`MirrorKOLPackage.lpk`**),然后按下**Install**按键,重新编译套件就行了。
6161
6262## 使用MCK
6363
6464### 建立MCK项目
6565
6666![](/wiki-images/0/04/MCKForm.png)
6767
68681. 启动Lazarus并点选表单来新增一个应用程序项目:**File \> New...**。
69692. 新增项目以后不要急! 千万不要在这个时候放任何元件上去,请先把项目存档,点选目录选项: **File \> Save All**,然后选择您要存放项目档案的目录即可。
7070
7171请注意!该项目的所有档案,都必须存放在同一个目录里面。您可以随时变更表单的单元档档名,但请不要变更项目的名称,就用原来的`Project1.lpi`。
7272
73731. 请拖拉一个**`TKOLProject`**元件放到表单上面。
74742. 请设定**`ProjectDest`**这个属性,来变更MCK项目的名称(不用包含路径喔)。如果您输入了`MyKOLProg`,那么您的MCK项目名称就会自动变成`MyKOLProg.lpi`,而产生出来的执行档,也会被命名为`MyKOLProg.exe`。\
7575 ![\|ProjectDest property](/wiki-images/c/c2/KOLProjectDest.png)
76763. 请把**`TKOLForm`**这个元件拖放到表单上面。
77774. 把目前的项目存起来。
78785. 请开启刚刚您在**`ProjectDest`**属性内设定的项目名称, (在刚刚的例子里面,应该是`MyKOLProg.lpi`,应该可以在同一个目录里面找到。然后,您就可以把`project1.*`给删掉了,以后不会再用到这些档案了。
79796. 跟您的新KOL/MCK项目熟悉一下吧。(调整参数,放TKOL相关元件,编译,执行,侦错等等) 祝您玩的高兴啦!
8080
8181### 新增一个表单
8282
83831. 点选目录选项: **File \> New form**
84842. 把新表单跟项目存放在同一个目录里面。(如果项目档已经存档了的话,没存档的话请先把项目档存档)
85853. 把**`TKOLForm`**元件拖拉到表单上面来。
86864. 请确认在项目的主表单上面,已经有摆放了**`TKOLApplet`**这个元件。
87875. 如果`AutoBuild`这个属性已经设定为关闭,请点选主表单上面的**`TKOLProject`**元件,并双击它的属性**`Build`**就可以建置该项目了,如果您双击**`Build`**没有动静的话,请按alt+Tab将视窗的焦点移到别的视窗上面,您就会发现有所动作了。
8888
8989### 撰写程序码
9090
9191请别使用RTL/FCL/LCL相关的单元,由其是SysUtils, Classes, Form这些单元,您需要的函式,应该在KOL, Windows, Messages这三个单元档里面找到,或者是由您自行撰写的。 当您在项目内撰写程序码的时候,请记得要放在事件处理函式内。您也可以自行撰写程序码,但不要动到程序原始码的开始部分,也就是LCL表单的宣告部分。 不要更改自动产生的inc档案,请记得,您在项目里面写的程序码,必须同时兼容于LCL跟KOL,当使用LCL建置的时候,宣告部分会使用LCL的相关单元档,项目会变成Win32兼容的应用程序,而使用KOL建置的时候,则会使用KOL的相关单元档,建置出来的则是WinCE兼容的应用程序。
9292
9393### 重点
9494
9595为了解决KOL跟LCL对关键字的冲突: `LCL.Self`跟`KOL.@Self`,所以要特别使用`Form`这个栏位,在LCL里面,`TKOLForm`元件的`Form`属性,将会回传`Self`这个属性,也就是表单本身的意思,而在KOL里面`Form: PControl`则是物件的属性之一,包含了表单元件。也因为这一点,要变更表单的属性,就要这么写:
9696
97-`Form.Caption := 'Hello!'; `
97+``` pascal
98+Form.Caption := 'Hello!';
99+```
98100
99101(原来的写法,是写成Caption := 'Hello!';即可,当在使用LCL对本项目进行编译的时候,这样是完全没问题的,但以KOL编译时则会出错) 但上述讨论的关键字`Form`只能使用到表单这个属性,无法使用到表单上面的控制项。您要使用子控制项跟表单的事件处理函式时,请依照原来的方式即可,例如: Button1.Caption := 'OK';
100102
101-`Button1Click(Form);`
103+```text
104+Button1Click(Form);
105+```
102106
103107### 在执行时期动态建立表单
104108
105109在执行时期,同一个表单是可以建立出多个实体的,只要把表单的属性”AutoCreate”设定成不要自动建立,然后在需要的时候再透过程序码来建立表单即可。要动态建立表单,请使用全域函式`NewForm1`:
106110
107-`TempForm1 := NewForm1( Applet );`
111+``` pascal
112+TempForm1 := NewForm1( Applet );
113+```
108114
109115要让这个动作能够执行,请别在建立表单实体的时候使用单元档里面的全域变量来承接建立出来的表单,除非您知道您为何要那么作。
110116
111117## WinCE
112118
113119#### 设定
114120
115121![arm-wince target](/wiki-images/5/5e/Arm-wince-target.png) 您需要在您的系统中安装Win32版本的arm-wince交叉编译器,以建立WinCE的应用程序,请从[这里](http://www.freepascal.org/download.var)下载。
116122
117123要编译arm-wince的应用程序,您必须先设定项目的编译器属性,请点选选单项目: **Project \> Compiler options...**,点选**Code**分页,并把target platform改变为arm-wince,如附图所示。
118124
119125**附注:** 在编译您的WinCE应用程序时,IDE可能会回报以下的错误讯息:
120126
121-`Compiling resource KOL-CE.rc`\
122-`arm-wince-windres.exe: no resources`\
123-`KOL.PAS(57901) Error: Error while linking`\
124-`KOL.PAS(57901) Fatal: There were 1 errors compiling module, stopping`
127+```text
128+Compiling resource KOL-CE.rc
129+arm-wince-windres.exe: no resources
130+KOL.PAS(57901) Error: Error while linking
131+KOL.PAS(57901) Fatal: There were 1 errors compiling module, stopping
132+```
125133
126134此时,您需要编辑Windows的环境变量**PATH**,把Win32平台FPC的编译器路径加进去。\
127135如果您不知道要加入哪个路径,请点选Lazarus选单项目: **Environment options**,然后看compiler path这个栏位的资料就是了。\
128136**别变动Lazarus里面的PATH,离开Lazarus**.\
129137用鼠标右键在”我的计算机”图示上面点击,选择目录里的’’’内容’’’,再点选内容视窗里面的**进阶**分页,再点选**环境变量**这个按键就可以编辑**PATH**这个环境变量了。
130138
131139#### 提示与注记
132140
133141- 要建立大多数Pocket PC上的全荧幕应用程序,请别变更表单的位置跟大小,如果表单的大小跟位置被变动了,则该表单就会看起来象是有标题栏的对话视窗,当然也包含标题栏的关闭程序按钮。在MCK里面把TKOLForm元件的**defaultSize**跟**defaultPosition**这两个属性设定为”True”就能让表单全荧幕显示了。
134142
135143#### 已知的问题
136144
137145- 下列两个元件目前不支援: RichEdit, TrayIcon.
138146- 目前只支援gsVertical, gsHorizontal 这两种panel样式。
139147
140148## 说明文件
141149
142150- 您可以从KOL官方网站找到KOL跟MCK的官方文件跟相关信息: <http://kolmck.ru>
143151- 请务必阅读MCK目录里面的**KOLmirrorReadme.txt**这个档案,这是MCK的说明文件。
144152
145153## 实际用KOL-CE制作的应用程序
146154
147155- [XP Mobile密码管理员](http://www.cp-lab.com/windows-mobile.html)
148156- [ChARMeD 反组译程序](http://blog.carolos.za.net/2007/05/charmed-for-pocket-pc-beta-030.html)
149157- [WMWifiRouter无线网络路由器](http://www.jongma.org/WMWifiRouter/)
150158
151159## 相关连结
152160
153161- [KOL&MCK官方网站](http://f0460945.xsph.ru/rindex.htm)
154162- SourceForge 网站上的KOL-CE网页 <http://sourceforge.net/projects/kol-ce/>
155163- [[WinCE port/zh TW|将WinCE移植给Free Pascal用]]
156164- [[Windows CE Interface/zh TW|Windows CE程序界面]]
157165- [[Windows CE Development Notes/zh TW|Windows CE开发笔记]]
158166
159167## 历史与联系
160168
161169请将您遇到的问题透过这个SourceForge的网址进行回报: <http://sourceforge.net/projects/kol-ce/>
162170
163171以上页面转换自[[KOL-CE/zh TW]],欢迎补充。
164172
165173---
166174*From the Free Pascal wiki, page "KOL-CE/zh CN", 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).*
167175Category: zh

Back to history