在这一章中,我们将讨论Palm OS的两个很重要的用户界面元素:表和滚动条。表能够显示或编辑较大的数据量。在嵌入式应用程序中都它使用的很广泛。滚动条的功能很出色,但由于滚动条不支持1.0版本的Palm OS系统,所以只有在不想支持较早的Pilot 1000和5000时,才可以使用滚动条。我们将同时添加滚动按钮(它可以被所有的Palm设备使用)和滚动条(请不要在一个真正的应用程序中使用!可能会系统崩溃的喔!),然而这些还不够,我们还将论及如何
支持PAGE UP和PAGE DOWN键。
保存工程
现在你已经有了这个习惯了吧,步骤如下:
1.运行Windows浏览器;
2.找到工程存放的文件夹;
3.选中文件夹,按CTRL+C来复制文件夹;
4.选择一个文件夹用来保存副本;
5.按CTRL+V把项目副本粘贴到备份文件夹中;
6.把项目名重命名为你容易记的名字,我把它命名为Contacts CH.7。
删除旧的资源
既然已用表代替了Contact List窗体中的列表框,那么我们需要把列表框删除。
1.运行Metrowerks 构造器;
2.打开资源文件Contacts.rsrc。它位于项目文件夹中的Src文件夹中;
3.双击打开Contact List窗体;
4.点击资源列表中名为List的资源,按DELETE键来删除;
5.Contact List窗体现在看起来如图8-1所示。
删除旧代码
既然已经将列表框删除了,函数buildList()和deleteList()也就不再需要了。找到并删除这两个函数及其有关的内容。你可以将光标放在文件的开始处,在菜单栏中选中Search | Find,输入buildList。在删除了所有与buildList有关内容后,你可以再对deleteList做相似的操作。
另外,删除在Contact List事件处理函数中响应1stSelectEvent事件的代码。这些代码是:
// CH.7 Respond to a list selection
case lstSelectEvent:
{
// CH.7 Set the database cursor to the selected contact
cursor = event->data.lstSelect.selection;
// CH.7 Go to contact details
FrmGotoForm( ContactDetailForm );
}
break;
表
相对其它的UI(用户界面)元素来说,表是容器。表中的UI元素和表外的Palm OS系统中 UI元素不太一样。在表中的每一个单元(Cell)(行+列)可以有不同的类型,也就是说,它可以支持不同类型UI元素,在接下来的部分中将描述这些类型。
在捕获事件和将单元中的数据传递给UI元素时,表也有所不同。一些普通的函数,对表却可以执行一些特殊的函数。表看起来很像静态的Palm OS,只是要保证将每个可用UI元素的类型区分开来。
不幸地是,许多表中可使用的UI元素,在我的工程中却用不到。本章中,我只是将如何建立了自己的定制单元的技巧做一些论述。
条目类型
表中的每一个单元都有自己的类型。例如,单元可以是一个字编辑框资源或一个复选框资源。表8-1中是这些类型及其操作的纲要。
类型 使用
CheckboxTableItem
除了没有文本和选项框关联外,这种类型的单元操作和一般的选项框一样,可以通过调用TblSetItemInt()将其选中或清除,0表示没有选中,1表示选中。
CustomTableItem
这是一个非常有用的单元类型。你必须为此类型每一列定义一个定制函数,在本章以后的部分中,我们更多讲述了如何处理这个类型的内容。这种类型是可编辑的。
DateTableItem
在此单元中显示的日期已定义为DateType格式,可用TblSetItemPtr()函数将指向DateType的游标传给表。这种格式的缺点是在过去的任何日期后都会写出一个感叹号。有时这或许是件好事,但有时它会强制你使用定制日期显示。这种类型是不可编辑的。
LabelTableItem
它用来显示一个标签。使用TblSetItemPtr()将字符串传递给表。此格式的缺点就是表经常在所传递的字符串后面加上一个冒号(:),并且文本通常是右对齐。这就是为什么在这一章中,我们要使用定制类型地原因。这种类型是不可编辑的。
numericTableItem
显示一个右对齐的数字。这种类型很好,不会加上一些怪异的内容。可调用TblSetItemInt()函数来设置数字。这种类型是不可编辑的。
popupTriggerTableItem
这种类型类似于弹出触发按纽。使用TblSetItemPtr()函数可以指向列表框的游标使列表框显示出来,使用TblSetItemInt()可以设置列表框到底选中哪一个条目。
TextTableItem
这种类型类似于编辑框,它是可编辑的。编辑框的长度可以改变和重叠。使用TblSetLoadDataProcedure()定义一个定制导入函数,将编辑框的句柄传递给表。使用TblSetSaveDataProcedure()定义一个保存函数,可以将数据保存在此句柄的编辑框中。所以你必须写这两个定制函数来支持表中的编辑框操作。
textWithNoteTableItem
这种类型会在一般的文本条目右边加入一个小的提示图标。这提示图标看起来象单独地被选中。当单元被选中后,你须调用TblEditing()看一下编辑框是否为可编辑模式。如果不是,Note图标已经被选中了,你就要切换到你的Note窗体去处理。
narrowTextTableItem
除了可以使用TblSetItemInt()在字段末尾处定义空间的大小,使之符合所填内容外,这个类型和一般的TextTableItem类型相同。例如,在日历窗体中,为了在条目的右边放置小的警告钟图标,Date Book程序就用这种类型来提供空间。
因为所有存在的类型都有其专用性,所以只有自己定制类型才能完成自己想实现的功能。
表的属性
表8-2中是表的属性描述。
和其它资源属性一样,在窗体中选中表资源后,就可以在构造器中进行编辑。
名称 描述
Object Identifier 在资源头文件中,构造器用之代表资源ID
Table ID 表的资源ID号。
Left Origin 水平方向上控件的最左端位置
Top Origin 垂直方向上控件的最顶端位置
Width 表的宽度
Height 表的高度。
Editable 定义表中可编辑的数据是否能被用户输入
Rows 表中可见的行数。
Column Widths 每一列的宽度,如果要定义一个新的列,按CTRL-K
添加一个表
现在将表添加到Contact List窗体中:
1.运行Metrowerks 构造器;
2.打开资源文件Contacts.rsrc,它位于工程文件夹中的Src文件夹中;
3.双击打开Contact List窗体。
4.在菜单中选择Window | Catalog来打开Catalog;
5.拖动表资源到窗体中;
6.设置表的属性:Object Identifier=Table,Left Origin=0,Top Origin=15,Width=153,Height=130。这样就有足够的空间放置十行,然后设置Rows为10,这样设置也可以在窗体右边留有足够的空间放置滚动条;
支持PAGE UP和PAGE DOWN键。
保存工程
现在你已经有了这个习惯了吧,步骤如下:
1.运行Windows浏览器;
2.找到工程存放的文件夹;
3.选中文件夹,按CTRL+C来复制文件夹;
4.选择一个文件夹用来保存副本;
5.按CTRL+V把项目副本粘贴到备份文件夹中;
6.把项目名重命名为你容易记的名字,我把它命名为Contacts CH.7。
删除旧的资源
既然已用表代替了Contact List窗体中的列表框,那么我们需要把列表框删除。
1.运行Metrowerks 构造器;
2.打开资源文件Contacts.rsrc。它位于项目文件夹中的Src文件夹中;
3.双击打开Contact List窗体;
4.点击资源列表中名为List的资源,按DELETE键来删除;
5.Contact List窗体现在看起来如图8-1所示。
删除旧代码
既然已经将列表框删除了,函数buildList()和deleteList()也就不再需要了。找到并删除这两个函数及其有关的内容。你可以将光标放在文件的开始处,在菜单栏中选中Search | Find,输入buildList。在删除了所有与buildList有关内容后,你可以再对deleteList做相似的操作。
另外,删除在Contact List事件处理函数中响应1stSelectEvent事件的代码。这些代码是:
// CH.7 Respond to a list selection
case lstSelectEvent:
{
// CH.7 Set the database cursor to the selected contact
cursor = event->data.lstSelect.selection;
// CH.7 Go to contact details
FrmGotoForm( ContactDetailForm );
}
break;
表
相对其它的UI(用户界面)元素来说,表是容器。表中的UI元素和表外的Palm OS系统中 UI元素不太一样。在表中的每一个单元(Cell)(行+列)可以有不同的类型,也就是说,它可以支持不同类型UI元素,在接下来的部分中将描述这些类型。
在捕获事件和将单元中的数据传递给UI元素时,表也有所不同。一些普通的函数,对表却可以执行一些特殊的函数。表看起来很像静态的Palm OS,只是要保证将每个可用UI元素的类型区分开来。
不幸地是,许多表中可使用的UI元素,在我的工程中却用不到。本章中,我只是将如何建立了自己的定制单元的技巧做一些论述。
条目类型
表中的每一个单元都有自己的类型。例如,单元可以是一个字编辑框资源或一个复选框资源。表8-1中是这些类型及其操作的纲要。
类型 使用
CheckboxTableItem
除了没有文本和选项框关联外,这种类型的单元操作和一般的选项框一样,可以通过调用TblSetItemInt()将其选中或清除,0表示没有选中,1表示选中。
CustomTableItem
这是一个非常有用的单元类型。你必须为此类型每一列定义一个定制函数,在本章以后的部分中,我们更多讲述了如何处理这个类型的内容。这种类型是可编辑的。
DateTableItem
在此单元中显示的日期已定义为DateType格式,可用TblSetItemPtr()函数将指向DateType的游标传给表。这种格式的缺点是在过去的任何日期后都会写出一个感叹号。有时这或许是件好事,但有时它会强制你使用定制日期显示。这种类型是不可编辑的。
LabelTableItem
它用来显示一个标签。使用TblSetItemPtr()将字符串传递给表。此格式的缺点就是表经常在所传递的字符串后面加上一个冒号(:),并且文本通常是右对齐。这就是为什么在这一章中,我们要使用定制类型地原因。这种类型是不可编辑的。
numericTableItem
显示一个右对齐的数字。这种类型很好,不会加上一些怪异的内容。可调用TblSetItemInt()函数来设置数字。这种类型是不可编辑的。
popupTriggerTableItem
这种类型类似于弹出触发按纽。使用TblSetItemPtr()函数可以指向列表框的游标使列表框显示出来,使用TblSetItemInt()可以设置列表框到底选中哪一个条目。
TextTableItem
这种类型类似于编辑框,它是可编辑的。编辑框的长度可以改变和重叠。使用TblSetLoadDataProcedure()定义一个定制导入函数,将编辑框的句柄传递给表。使用TblSetSaveDataProcedure()定义一个保存函数,可以将数据保存在此句柄的编辑框中。所以你必须写这两个定制函数来支持表中的编辑框操作。
textWithNoteTableItem
这种类型会在一般的文本条目右边加入一个小的提示图标。这提示图标看起来象单独地被选中。当单元被选中后,你须调用TblEditing()看一下编辑框是否为可编辑模式。如果不是,Note图标已经被选中了,你就要切换到你的Note窗体去处理。
narrowTextTableItem
除了可以使用TblSetItemInt()在字段末尾处定义空间的大小,使之符合所填内容外,这个类型和一般的TextTableItem类型相同。例如,在日历窗体中,为了在条目的右边放置小的警告钟图标,Date Book程序就用这种类型来提供空间。
因为所有存在的类型都有其专用性,所以只有自己定制类型才能完成自己想实现的功能。
表的属性
表8-2中是表的属性描述。
和其它资源属性一样,在窗体中选中表资源后,就可以在构造器中进行编辑。
名称 描述
Object Identifier 在资源头文件中,构造器用之代表资源ID
Table ID 表的资源ID号。
Left Origin 水平方向上控件的最左端位置
Top Origin 垂直方向上控件的最顶端位置
Width 表的宽度
Height 表的高度。
Editable 定义表中可编辑的数据是否能被用户输入
Rows 表中可见的行数。
Column Widths 每一列的宽度,如果要定义一个新的列,按CTRL-K
添加一个表
现在将表添加到Contact List窗体中:
1.运行Metrowerks 构造器;
2.打开资源文件Contacts.rsrc,它位于工程文件夹中的Src文件夹中;
3.双击打开Contact List窗体。
4.在菜单中选择Window | Catalog来打开Catalog;
5.拖动表资源到窗体中;
6.设置表的属性:Object Identifier=Table,Left Origin=0,Top Origin=15,Width=153,Height=130。这样就有足够的空间放置十行,然后设置Rows为10,这样设置也可以在窗体右边留有足够的空间放置滚动条;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126905/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10294527/viewspace-126905/