WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章手机编程PlamPALM开发教程-第九章 分类和查找

PALM开发教程-第九章 分类和查找
作者:palmheart  来源:palmheart.net  发布时间:2005-12-21 3:36:55
在这一章中,我们在Contacts程序中添加分类。分类允许把Contacts分成组,如Business和Personal。你可以分别或统一查看这些组。你还可以为Contacts应用程序添加、删除、或者改变分类名称。你可以把每一条记录分配到一个组。

我们也将在Contacts中添加代码使用Palm OS系统查找(Find)功能在Contacts数据库中查找相关的内容。你可以输入短日期或者人的全名,在存储有不同的字段和格式的数据库中找到匹配的记录。你也可以选中任何一个找到的条目,让其在Contact Detail窗体中显示。

保存工程

在做下一步之前,还是要提醒你这一点。操作步骤如下:
1.运行Windows浏览器;
2.找到工程存放的文件夹;
3.选中文件夹,按CTRL+C来将其复制;
4.选择一个文件夹用来保存副本;
5.按CTRL+V将副本粘贴到备份文件夹中;
6.把项目名重命名为容易记的名字,我把它命名为Contacts CH.8。

分类

如果你想把应用程序放在一个组中,分类正好可以实现。可以给一个应用程序定义15个组,这样多的组对于一般的应用程序已足够了。在我的Palm上,任何一个应用程序的组都不超过6个。

Palm OS做了大量分类的工作。一旦把应用程序信息创建完成,分类管理器(Categories Manager)就会将其保持在那个地方。并且创建出下拉框来管理,允许对分类的创建、

修改和删除。
我们的主要工作是把分类中的记录分离出来并浏览。在这之前,处理记录的方法和以前完全相同。在显示记录之前,检查这条检查是否属于当前的分类。这就会引发滚动条的一些问题。

Contacts.rsrc的内容添加

在Constructor中添加三个分类:
◆在Contact List窗体添加弹出列表框,用来过滤contacts窗体列表。它必须与分类管理器(Category Manager)的要求一致;
◆在Contact Detail窗体中添加弹出列表框,用来选择当前记录所在的分类;
◆创建一个App Info String List资源,定义应用程序中所在的初始分类;

Contact List Form的内容添加

现在到了向Contact List窗体中加入资源时候了,让人们来看看我们具体的分类。

1.运行Metrowerks构造器;

2.打开资源文件Contacts.rsrc,它位于项目文件夹中的Src文件夹中;

3.双击打开Contact List窗体;

4.从菜单中选择Window | Catalog,打开Catalog;

5.拖动一个列表框(list)到窗体中;

6.设置列表框属性:Object Identifier=CategoryList,Left Origin=86,Top Origin=1,Width=72,不复选Usable项,因为我们不希望窗体显示的时候把列表也把窗体显示出来,Visible Items=0。作为分类服务的一部分,Palm OS将动态地建立列表(根据我们的要求)。

7.拖动一个弹出触发按纽(Pop-up trigger)到窗体上;

8.将触发器命名为CategoryPopup。Left Origin=160,Top Origin=0,Width=0。不复选Anchor Left,这样使触发器标签文本(从左端的160象素处)和屏幕右侧右对齐。我们将在程序中快速的删除或添加标签中的文字。

9.完成后,Contact List窗体看起来如图9-1。




注意:

你不需要和一般的弹出触发器一样来设置列表的ID,尽管做了也不会有什么不当。你将看到,我们不是调用触发器的ctlSelectEvent事件,而是调用了具体的分类函数。

Contact Detail Form的内容添加
现在我们修改Contact Detail Form,允许人们在分类具体的条目。

10.在Resource Type and Name列表中双击打开Contact Detail List窗体;

11.拖动一个标签到窗体中。设置标签属性:Text为Category,选择粗体。Top Origin=90,选中所有的(按住SHIFT点击)的标签,再选择Arrange | Align Right Edges,使它与其它右对齐的标签对齐;

12.拖动一个列表框控件到窗体中;

13.设置列表框属性:Object Identifier= CategoryList。Left Origin=80,Top Origin=90,Width=80。不复选Usable,因为我们不希望窗体显示的时候列表框就显示。设Visible Items为0。和其它的分类列表框一样,Palm OS将动态建立这个列表;

14.拖动弹出触发器到窗体中;

15.和Contact List窗体类似,把触发器命名为CategoryPopup。Left Origin=80,Top Origin=89,Width=80。和以前一样,你可以保留或者删除标签中的文字;

16.完成后,Contact Detail窗体看起来如图9-2;





17.最后,需要新建一个App Info String List资源来初始化分类名称。在Constructor的Resource Type and Name列表中点击App Info String Lists,并按CTRL-K 新建一个。注意不要创建一个旧的String List;

18.把App Info String List命名为Category Labels,双击打开;

19.在列表的前三个条目中输入:Unfiled,Business和Personal。

20.按12次ENTER键创建16个条目。这将初始化其它分类为空白而不是垃圾。完成后,列表看起来如图9-3。我重申一下:你必须初始化所有16个条目;否则,一些令人费解的事情就会出现。




这就把为支持分类对资源文件所需做的修改完成了。关闭Constuctor并及时保存资源文件。

Contacts.c的修改
为支持分类,在Contacts.c中需要添加四个任务:
◆创建数据结构,以符合Category Manager的要求;
◆支持Contact Detail窗体中分类弹出列表;
◆支持Contact List窗体中的分类弹出列表;
◆Contact List窗体在不同分类时,处理滚动条事件;

初始化分类

分类信息一般要保存在应用程序主数据库的信息模块上。为此,需要在PilotMain()中创建数据库后,新添加一些代码。在函数的顶部先添加一些新的变量:

LocalID dbID; // CH.9 Local ID of the database
UInt cardNum; // CH.9 Card number
LocalID appInfoID; // CH.9 Local ID of the app info block
VoidHand hAppInfo; // CH.9 Handle to the app info block
AppInfoPtr pAppInfo; // CH.9 Points to the app info block

然后,看一下应用程序的信息块:

// CH.9 Get the ID and card number
DmOpenDatabaseInfo( contactsDB, &dbID, NULL, NULL, &cardNum, NULL);

// CH.9 Get the app info pointer if any
DmDatabaseInfo( cardNum, dbID, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, &appInfoID, NULL, NULL, NULL );

深入:

程序信息模块(App Info Block)
每个Palm OS数据库都有一个叫app info block特殊区域。你可以在这个区域中保存任何东西。如果已经使用它保存了分类,还可以在分类结构的末尾处插入具体的数据,Palm OS也

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]  下一页

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码