• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

SCO UNIX环境下面向对象的程序设计 11

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网
[quote:4bad7016f0]第十一章 控件对象
那些使用户输入易于转换的用户界面元素统称为控件元素。校验框和列表框是读者熟悉的两种控件元素。在Object UNIX Class Library中,所有的控件类都从TControl中派生的。

由Tcontrol所派生的类是交互式窗口控件的典型。在您的应用程序中,您可以使用下表所列的派生类的实例。

Object UNIX Class Library提供的控件
 
控件
 类
 用途
 
标签(静态文本)
 TLabel
 用于显示静态文本
 
编辑框
 TEdit
 用于用户的文字输入区域
 
按钮
 TButton
 带文字标记的按钮
 
行线、竖线
 TLine
 用户对话框屏幕分组修饰
 
成组框
 TGroup
 用于校验框和互锁按钮的分组
 
列表框
 TList
 可翻转选择的列表,如文件列表
 
组合列表框
 TComboBox
 列表框和编辑控件的组合
 
校验框
 TCheckBox
 用于做校验判断的带文字框
 
互锁按钮
 TRadioButton
 用于做互斥选择的按钮
 
文本文件显示框
 TView
 用于显示文本文件并支持全屏浏览
 
多行文本编辑框
 TMultiEdit
 用于多行文本的编辑
 
滑动尺
 TScroller
 用于表示某动作的执行过程
 
数据库浏览框(Browser)
 TBrowser
 用于多行多列的翻转选择的列表
 

前面所列出的全部控件类型,Object UNIX Class Library都定义了相应的类,用户可以直接引用它,如果为了特殊需要,你可以在从某个类中派生,制作成您所需要的控件。

 

11.1 控件对象的使用
控件对象一般都作为对话框对象的子对象使用,它与对话框对象是并存的,控件随其父对话框生成和消失。这种机制在Object UNIX Class Library中是自动提供的。在父对话框的控件列表中的每一个子控件都是在父对话框的生成过程中产生的,当父对话框被撤消时,子控件也就消失。

在对话框中,为使用某个控件,您都需要实例化它,并在父对话框类定义中为该控件定义一个对象数据成员。

TList *List;



List = new TList(…);

List->AddString(“item1”);



由于每个控件都有其键盘事件,所以通过重载父对话框的成员函数KevEvent来识别各自控件的事件。



if(strcmp(ControlList->Control->GetClassName(),"BUTTON")==0){

        Button=(TButton *)ControlList->Control;

        switch(Button->ButtonType) {

            case EXIT_BUTTON:

               //处理按下确认键,该段程序需要用户自己编写

               break;

            …

}



11.2 控件焦点与键盘
您是否曾使用键盘在对话框中将输入焦点从一个控件转换到另一个控件呢?Tab键和Shift_Tab能够完成由一个控件到另一个控件的循环切换(根据生成的次序)。另外,光标键和回车键也可以用语在控件间循环切换。为使这种“键盘处理”功能无效,您可以在您的父对话框对象的初始化函数中对控件对象的KeyEventFlag属性设置为FALSE。

您也可以很方便地使用成员函数SetFocus从一个控件跳到指定的控件。只要您指定目标控件的控件指针。

另外,当一个控件失去焦点时,将产生一个事件LostFocus,您可以重载该函数,以判断当该控件失去焦点时是否作些什么处理。

11.3 标签(静态文本)控件
标签控件常常是在对话框中显示不变的文本,当然,您可以在程序运行中改变显示的内容,从这方面看出,标签控件不算为静态文本控件,只是由于一般不会改变显示的内容,所以也就称之为静态文本。

11.3.1 创建标签控件
由于标签控件没有键盘事件,所以在Object UNIX Class Library中把该控件的键盘事件属性设置为假:KeyEvent=FALSE。

TLabel的构造函数比较简单,它只需要用户传递显示的内容,显示位置以及显示颜色即可。

Label1 =  new TLabel(“姓名:”,4,1,BLACK_WHITE);

其中,构造函数的第一个参数为标签内容,第二个参数为相对于父对话框的列坐标,第三个参数为相对于父对话框的行坐标,第四个参数为标签文本内容显示的前景颜色,本例是采用黑色前景,白色背景显示文本。

 

11.3.2 查询标签控件
要查询目前标签控件中采用的文本,可以直接使用标签控件类的数据成员Caption。例如:strcpy(buff,Label->Caption);

 

11.3.3 修改标签控件
要修改目前标签控件中采用的文本,可以直接赋值标签控件类的数据成员Caption。例如:Label->Caption=”住址:”;

11.4 编辑框控件
编辑框控件是在长方形的控件,它用来索取用户输入的文本串。编辑框控件可以由用户“键入”文本,其文本也可以方便地修改。它支持丰富的行编辑功能。这里有两类编辑框控件:支持定长输入和不定长输入。每种输入又支持两种输入显示方式:支持普通文本输入和支持密码输入。这里的密码输入指的是您输入后在输入框内只显示“*”而不、显示实际的内容。

11.4.1 创建编辑框控件
TEdit的构造函数接收一般的控件构造函数参数如坐标,显示颜色等以及支持编辑类特有的参数如输入缓冲区等。

下面代码用于生成定长输入的普通文本编辑:

TEdit *Edit;

Edit = new TEdit(24,0,4,2,26,1,BLACK_WHITE,WHITE_WHITE);

其中第一个参数24表示最多输入24个字母;第二个参数表示普通文本输入,如果采用密码输入,则该参数置为1;第三个参数表示输入框相对于父对话框的列坐标;第四个参数表示输入框相对于父对话框的行坐标;第五个参数表示输入框的宽度,一般取值比最多输入字母个数多2;第六个参数表示输入字母显示的前景颜色,本例采用黑前景白背景;第七个参数表示输入字母显示的背景颜色,本例采用白背景;

如果您想在分组框内放置一个编辑框控件,则应该在其构造函数的第一个参数前加一个参数:分组对象TGroup的指针。

如果您采用不定长的编辑框,则上述例子的第一个参数不要,共六个参数。当您输入的个数超过编辑框定义的长度,系统会自动翻滚。您可以用左、右移光标键来定位。编辑框所允许的最大长度为256个字符。其中编辑框的宽度由第四个参数编辑狂宽度定义。

下面代码用于生成不定长输入的密码文本编辑:

TEdit *Edit;

Edit = new TEdit(1,4,2,26,1,BLACK_WHITE,WHITE_WHITE);

其中第一个参数1表示密码输入方式,其它参数定义同上个例子说明。

11.4.2 查询编辑框控件
用户经常需要查询编辑框控件,旨在检查输入文本项的有效性,将它存储起来以备后用,或者拷贝到另一个控件中。Tedit存在数据成员Text,您可以直接引用该数据成员以得到您所输入的文本。该数据成员定义为字符数组,长度为256个字节。该输入文本是以’\0’为结束符的标准C语言字符串。例如,您要拷贝输入内容到一个数组中:strcpy(buffer,Edit->Text);当然,您申请的buffer数组长度应该比实际输入的长度大,否则,将出现内存错误。

11.4.3 修改编辑框控件
为了对编辑框控件设置初值,您可以直接引用TEdit类的数据成员Text。比如,您可以拷贝一个字符串到输入框中,当该控件显示时,如果数据成员Text不为空,系统就会显示其内容在编辑框中。这对编辑框赋初值比较有用。

11.5 按钮控件
按钮(有时称为“命令按钮”)在每次被按下时都完成一定的任务。在Object UNIX Class Library的定义中,它是作为退出对话框的唯一途径,也就是说,只有在对话框中定义了一个按钮控件,对话框才能退出,否则,对话框将无法退出,这样,应用程序也将无法退出。所以,一个对话框中应该至少含有一个按钮控件。

11.5.1 创建按钮控件
TButton的构造函数接收一般的控件构造函数参数如坐标,显示颜色等参数。另外,它还接受按钮上显示的文本Caption以及按钮类型参数ButtonType。下面介绍一个通常的按钮定义方式:

TButton *Button;

Button = new TButton(EXIT_BUTTON,”退出”,4,10,

                   BLACK_CYAN,WHITE_MAGENTA);

在本例子中,TButton构造函数的第一个参数EXZIT_BUTTON表示按钮的类型;第二个参数表示显示在按钮上面的文本;第三个参数表示按钮所处的列坐标;第四个参数表示按钮所处的行坐标;第五个参数表示按钮文本显示的前景颜色BLACK_CYAN;第五个参数表示按钮背景的填充颜色WHITE_MAGENTA;

这里需要说明的是,按钮类型的定义对用户有很大的区别。在Object UNIX Class Library中提供了两类按钮:普通按钮和具有退出对话框能力的按钮。在系统提供的头文件define.hpp中有对按钮类型进行了定义,当然,您也可以增加其定义,但不能修改。

有两类按钮类型可以退出对话框系统:EXIT_BUTTON和OK_BUTTON。因此在您设计对话框时,至少应该含有一个上述类型的控件。当然,按钮类型与按钮上面显示的文本并没有必然的联系,您可以定义“退出”为退出对话框,也许根据业务需要,“取消”或“保存”也可以退出对话框。这种定义一般根据实际的需要和常规的情理来进行的。

对于其它的按钮,您可以选用其它的按钮类型。只要保证一点,在对话框内的所有按钮类型必须唯一,也就是说,按钮类型不能重复。由于在按钮类型的常量定义中已经区别开了,所以能够保证其唯一。用户随后增加的按钮类型应该保证不能和已有的类型冲突。

11.5.2 对按钮事件的响应
不论何时,只要用户按下按钮,按钮的父对话框就会收到一个通知消息,父对话框通过事件响应函数对此作出响应。

在下面的例子中,定义一个响应按钮事件的消息响应函数。

int TUserDialog:ressEnterEvent(void)

{

 TButton *Button;

 if(strcmp(ControlList->Control->GetClassName(),"BUTTON")==0){

        Button=(TButton *)ControlList->Control;

        switch(Button->ButtonType) {

            case SAVE_BUTTON:

                //处理按下确认键,该段程序需要用户自己编写

                break;

            case EXIT_BUTTON:

               //处理按下确认键,该段程序需要用户自己编写

               break;

        }

    }

    return 1;

}

11.6 画线控件
画线控件类似于标签控件,没有键盘事件。它只是用于在屏幕上画一条横线或者竖线。在对话框中,一般用于把按钮控件和其它控件分隔开的屏幕修饰。

11.6.1 创建画线控件
TLine构造函数接受常规的控件参数如坐标以及颜色等,并接受其特殊的参数如画横线或竖线标志。

下面例子创建一个横线控件:

TLine *Line;

Line = new TLine(M_HORZ,0,10,Width,10,FTColor));

其中,第一个参数M_HORZ表示画横线,如果该参数为M_VERL,则表示画竖线;第二个参数表示相对于父对话框的列坐标;第三个参数表示相对于父对话框的行坐标;第四个参数表示宽度,这里选用父对话框的宽度,表示该线长度和对话框的宽度一样;第五个参数表示竖线的高度,对于所画线为竖线,则该参数有用,而第四个参数无用;第六个参数表示画线所使用的前景颜色,这里采用父对话框的前景颜色。

11.7 成组框控件
Object UNIX Class Library的成组框元素是一个带标记的矩形框,它直观地把其它控件组织在一起。但它本身并不做任何操作。控件的逻辑编组不是它们在成组框元素中定位的结果,而是依赖于控件创建的顺序。

但是Object UNIX Class Library的TGroup对象并不是虚设的,它在逻辑分组中起着很大的作用。通过为您的选择框指定一个TGroup(创建时),便能够为一个“组”定义响应方法,而勿需定义各别的响应方法。TGroup通过把从选择框接受的通知消息转换成“组”通知消息传给父对话框

11.7.1 创建成组框
TGroup的构造函数接受通常控件构造函数的参数:坐标、宽度、高度以及显示颜色。另外,还要传递一个成组框标题和一个在父对话框内唯一的组号ID。

TGroup *Group;

Group = new TGroup(1,”文件列表”,2,3,24,6,BLACK_WHITE);

11.7.2 响应成组框消息
当组内一个检验框或者互锁按钮的状态被改变是,它的TGroup将被通知。然后,TGroup发送一个“组”通知消息给其父对话框。父对话框根据成组框内的控件进行响应并设置成组框内的控件状态。

11.8 列表框控件
使用列表框是交互式应用程序用户从列表中拾取选择最为简单的方法。例如,可以让用户从文件、打印机、形状或水果等的列表中进行选择。列表框是由TList类封装的。TList类定义了四种功能的成员函数:生成列表框、修改项目表、查询项目表、找出用户选择的项目。

 

11.8.1 创建列表框
一个TList的构造函数接受常规的控件构造函数参数:坐标、位置、显示颜色等等。下面例子创建一个列表框控件对象。

TList *List

List = TList(0,”列表框”,4,5,20,5,BLACK_WHITE,BLACK_BLACK,

             YELLOW_BLUE,BLUE_BLUE);

其中,第一个参数固定设置为0;第二个参数表示列表框标题(系统没有把它显示出来);第三个参数表示相对于父窗口的列坐标;第四个参数表示相对于父窗口的行坐标;第五个参数表示列表框宽度;第六个参数表示列表框的高度;第七个参数表示列表框内部项目显示的前景颜色;第八个参数表示列表框的背景颜色;第九个参数表示被选中的列表框表项的前景颜色;第十个参数表示被选中的列表框表项的背景亮条颜色。

11.8.2 修改列表框
创建了列表框后,将要向表内填入项目,然后,您可以增加项目,或者完全删除。填入或增加项目可以调用列表框的成员函数AddString。

List->AddString(“Item1”);

List->AddString(“Item2”);

List->AddString(“Item3”);

List->AddString(“Item4”);

List->AddString(“Item5”);

如果AddString失败,将返回一个0;

列表框保存在一个与字符串数组相似的数组双向链表中,只要系统内存足够,可以无限地增加表项。

若要删除一个表项,则需要调用成员函数DeleteString,下面成员函数将在索引1(“Item2”)处删除一个串,然后,其后的索引号将依次减1:

List->DeleteString(1);

最后,ClearList成员函数将删除列表框中的全部表项:

List->ClearList();

 

11.8.3 查询列表框
共有四种成员函数可供调用,可以调用这些函数来查询列表框对象中的列表内容。

l     GetCount返回表中的表项数目,您也可以直接引用其成员数据Count

l     FindString用于搜索指定串,从头开始搜索。FindString搜索表中含有指定串的项目并返回该串所在表中的索引,如果返回-1,则表示表中没有该串。

l     GetSelIndex返回给定串的索引值,您也可以直接引用列表框的成员数据Index。

如果您比较熟悉列表框类的定义,您也可以直接引用列表框类的数据成员CurList来取得当前已经选定的串。该数据成员是一个指向列表框表项的双向链表的指针。CurList->Text就是当前选定的表项内容。

11.9 组合框控件
组合框控件是其它两个控件的联合:列表框和编辑框。它用于检索两种形式的用户输入:选择列表框中的选项或在编辑框中打入文本。

TComboBox是由TList派生的,并继承了它修改查询和选择列表项的成员函数。另外,TComboBox还提供了操纵组合框和编辑框的成员函数。

本组合框提供的是列表组合框。当聚焦在本控件时,您可以通过下移光标键打开下拉列表框,通过回车键或ESC键可以关闭下拉框。被下拉列表框覆盖的屏幕部分,它会自动保存并在退出下拉时自动恢复。

该组合框有个好处就是,您需要它时,它就出现。这样可以节省屏幕的编排空间。

11.9.1 创建组合框
TComboBox的构造函数需要与TList构造函数类似的参数。

下面例子说明组合框对象的创建:

TComboBox ComboBox;

ComboBox = TComboBox(”组合框”,4,5,20,5,BLACK_WHITE,BLACK_BLACK,

             YELLOW_BLUE,BLUE_BLUE);

其中,第一个参数表示列表框标题(系统没有把它显示出来);第二个参数表示相对于父窗口的列坐标;第三个参数表示相对于父窗口的行坐标;第四个参数表示列表框宽度;第五个参数表示列表框的高度;第六个参数表示列表框内部项目显示的前景颜色;第七个参数表示列表框的背景颜色;第八个参数表示被选中的列表框表项的前景颜色;第九个参数表示被选中的列表框表项的背景亮条颜色。

11.9.2 查询组合框
查询组合框与列表框的方法一样,可以参考上面的说明。这里需要说明的是,下拉列表框与编辑框的联系。一般,当您通过下拉列表框选中一个表项时,编辑框将显示您选择的内容。有两个成员函数可以供您调用:SetText和GetText。

GetText成员函数返回当前编辑框内的内容,SetText将传递字符串给编辑框。

当您在下拉列表框中按下回车键后,ComboBox->Text的内容和ComboBox->CurList->Text的内容将是一样的。其中ComboBox->Text表示的是组合框的编辑框的内容,而ComboBox->CurList->Text表示的是当前由用户选中的表项的内容。Object UNIX Class自动保持这两项内容的同步。

11.10 检验框和互锁按钮控件
校验框和互锁按钮有时被当成选择框,这是因为它们都是以选择的形式取得用户输入的。校验框和互锁按钮一般有两种状态:CHECKED和UNCHECKED。

通常,校验框是用来获取用户(可能是多个)选择的;而互锁按钮则是用来作一个或几个互相排斥的选择。

校验框和互锁按钮是由TCheckBox和TadioButton的事例所表示。TradioButton是由TCheckBox派生的。

 

11.10.1 创建检验框和互锁按钮控件
TCheckBox和RadioButton构造函数接受通常的控件构造函数:成组框组号标识GroupID,坐标以及显示颜色。另外,还接受一个初始状态。

GroupID是已经定义好的成组框的组号,被用来指向选择框的逻辑分组。如果您不指定成组框号,则选择框不属于任何分组,默认它属于父对话框。

TCheckBox *CheckBox;

TradioButton *RadioButton;

CheckBox = new TCheckBox(CHECKED,1,”校验框一”,4,5,BLACK_WHITE);

RadioButton = new TadioButton(UNCHECKED,1,”互锁按钮一”,

                              4,6,BLACK_WHITE);

其中,第一个参数CHECKED或UNCHECKED表示它们的初始状态;第二个参数表示成组框组号;第三个参数表示它们的显示文本;第四个参数表示相对于父对话框的列坐标;第五个参数表示相对于父对话框的行坐标。

11.10.2 查询检验框和互锁按钮的状态
查询选择框是查找选择框的状态,并对它作出响应的一种方法。互锁按钮和校验框有两种状态:CHECKED和UNCHECKED。使用类成员数据可以得到它们的状态:CheckBox->Status和RadioButton->Status。

11.10.3 修改检验框和互锁按钮的状态
修改选择框的扎表面上看来是程序用户的职责,但是,在某些时候,程序需要直接控制选择框的状态。

TCheckBox类和TradioButton类提供了两个成员函数使您能完成该操作:SetCheck和SetUnCheck。

l     SetCheck强制选择框为CHECKED状态

l     SetUnCheck强制选择框为UNCHECKED状态

11.11 文本文件显示控件
文本文件显示控件提供给用户在对话框内显示文件的能力。通过该控件,用户可以在对话框内浏览一个文本文件。该控件支持虚拟的文件浏览。用户可以通过光标键翻转选择。

11.11.1 创建文本文件显示控件
Tview构造函数接受通常的控件构造函数参数:坐标、显示框宽度和高度以及显示的颜色,还接受其特有的参数:文件名。

下面以例子定义一个文本显示控件对象:

TView *View;

View = new TView(2,1,40,14,”owl.txt”,BLACK_WHITE,WHITE_WHITE);

11.12 数据库浏览控件
数据库浏览控件也称表格框,是提供给用户一个多行多列的列表框控件。有点类似数据库系统提供的表格数据浏览Browser。

该控件支持定长和不定长的数据显示。只有系统内存充足,则可以无限装入数据。

11.12.1 创建数据库浏览控件
TBrowser构造函数接受通常的控件构造函数参数:坐标、显示框宽度和高度以及显示的颜色。

下面例子介绍数据库对象的创建方法:

Tbrowser *Browser;

Browser = new TBrowser(“数据库”,2,2,40,10,FTColor,BKColor);

其中,第一个参数表示数据库控件的标题(系统不会显示);第二个参数表示相对于父对话框的列坐标;第三个参数表示相对于父对话框的行坐标;第四个参数表示宽度;第五个参数表示高度;第六个参数表示显示的前景颜色;第七个参数表示显示的背景颜色。

11.12.2 修改数据库控件
创建了数据库控件后,将要向表格框内填入各个字段的标题,然后,您可以增加记录,或者完全删除。

下面详细列出步骤来说明:

1、 向表格框内填入各个字段的标题

Tbrowser提供成员函数InsertFieldName来支持本操作,它有4个参数,其中第一个参数表示表格中总字段数;第二个参数表示当前字段的索引,从0开始记述;第三个参数表示字段的汉字显示名称;第四个参数表示字段的宽度,一般来说,如果字段长度小于汉字显示名称的长度,则去汉字显示名称的长度,当然,去实际字段长度也可以。下面事例定义5个字段:

Browser->InserdFieldName(5,0,“编号”,4);

Browser->InserdFieldName(5,1,“姓名”,16);

Browser->InserdFieldName(5,2,“性别”,2);

Browser->InserdFieldName(5,3,“年龄”,4);

Browser->InserdFieldName(5,4,“地址”,64);

在Object UNIX Class中要求增加字段名称是必须的。

2、 增加记录

    在增加完字段名称后,应该增加记录。该控件类提供增加记录的成员函数InsertRecord。该函数没有参数。它作为增加字段的前奏,必须先运行该函数后,才可以进行下步的增加字段操作。

3、 增加字段

在运行完增加记录函数InsertRecord后,您就可以运行增加字段函数。该控件提供类成员函数InserdField来完成本操作。该函数需要四个参数,其中第一个参数指向当前记录的指针,在类的成员数据中有一个对象表示当前记录的指针:CurRecord,所以您可以把该数据成员作为一个参数传递。实际上,您在运行成员函数InsertRecord后,CurRecord指针就指向您新增加的记录了;第二参数表示字段内容;第三个参数表示字段的长度;第四个字段表示字段的类型如:整型、数值型、日期型、字符型等。这要根据您实际的数据库定义了。下面例子说明上面已经定义好的

Browser->InsertField(Browser->CurRecord,”0001”,16,”char”);

Browser->InsertField(Browser->CurRecord,”林风人”,16,”char”);

Browser->InsertField(Browser->CurRecord,”男”,16,”char”);

Browser->InsertField(Browser->CurRecord,”28”,16,”char”);

Browser->InsertField(Browser->CurRecord,”福州”,16,”char”);

 

若要删除一个记录,则需要调用成员函数DeleteRecord,下面成员函数将删除第2条记录:

Browser->DeleteRecord(2);

最后,ClearRecord成员函数将表格中的全部记录:

List->ClearRecord();

当然,您也可以修改某记录的内容,可以使用成员函数SetFieldText。它有三个参数,第一个参数表示当前记录的指针;第二个参数表示某字段的中文名,该中文名与上面自己定义的字段中文名要一致;第三个参数为内容存放的空间数组。例如,要设置当前记录“姓名”字段的内容,用以下方法:Browser->GetFieldText(Browser->CurRecord,”姓名”,”林风人”)。

11.12.3 查询记录和字段
系统提供的成员函数可以用来查询表格中的记录和字段内容。

l     成员数据RowCount表示表格中共有多少条记录

l     成员数据ColCount表示表格中共有多少个字段

l     成员数据CurRecord表示当前记录指针

l     成员数据CurField表示当前字段指针

l     GetFieldText用来各到某条记录的指定字段名的内容。它有三个参数,第一个参数表示当前记录的指针;第二个参数表示某字段的中文名,该中文名与上面自己定义的字段中文名要一致;第三个参数为内容存放的空间数组。例如,要得到当前记录“姓名”字段的内容,用以下方法:Browser->GetFieldText(Browser->CurRecord,”姓名”,buffer)。

11.12.4 附加说明
系统提供的本控件并没有提供数据库操纵的能力,如果您要从数据库中取得数据,然后把查询结果放在控件的表格中,您需要自己编写数据库操作函数。本控件提供过程接口。

假设您要从Oracle数据库中取得数据,您要编写Pro*C来完成,建立连接,打开数据库,执行InsertFieldName函数,编写游标,执行循环Fetch数据到变量,执行InsertRecord函数,然后依次执行InsertField函数,最后关闭数据库。

如果您是从普通格式文本文件中取得数据,您也可以采用上述方法进行。

可以这么说,该控件实际上是一个表格控件。

11.13 滑动尺控件
滑动尺控件包括一个可以移动的滑动块,每一个位置对应着一个范围的值。滑动尺控件用来表示某事件的执行的过程的屏幕直观表示,比如,用户正在拷贝文件或者在查询数据库,滑动尺的移动正好表示文件拷贝了多少或者数据库查询到何程度。

11.13.1 创建滑动尺对象
TScroller构造函数接受一般控件的构造函数的参数:相对于父对话框的坐标、滑动尺框度、高度、前景滑动块颜色、背景滑动框颜色以及自己特殊的参数如:滑动尺类型、滑动尺的最大范围、每次滑动的步长等等。

Scroller = new TScroller(1,2,1,20,1,BLUE_BLUE,WHITE_WHITE,100,1)

其中、第一个参数表示滑动尺的类型:1表示横向滑动尺、0表示竖向滑动尺;第二个参数表示相对于父对话框的列坐标;第三个参数表示相对于父对话框的行坐标;第四个参数表示滑动框的框度;第五个参数表示滑动框的高度;第六个参数表示滑动块的前景颜色;第七个参数表示滑动框的背景颜色;第八个参数表示滑动的最大范围;第九个参数表示步长。

11.13.2 查询滑动尺
TScroller定义了三个用于查询滑动尺的成员函数:GetRange、GetPosition和GetStep。GetRange定义了一个长整型的长度,其它两个定义为整型。

GetRange返回滑动框的最大值,GetStep返回每次滑动块的步长,GetPosition返回当前滑动块的位置。

11.13.3 修改滑动尺
修改滑动尺通常是用户的事情,但是您的程序可以修改它。

滑动尺的最小范围为1,最大范围由用户设置。例如,您可以设置滑动的区间为1到100,则程序如下:

SetRange(100);

当然,您在程序中,您要指定当前滑动尺的位置来表示事件的处理过程。下面以文件拷贝为例:

int CopyFile(char *fil21,char *file2)

{

    ……

    //打开文件,计算文件长度,例如为183940字节。

    //滑动框宽度为40

    int n=0;

    SetRange(183940);

    while(1) {

        ……

        //循环读文件,一次读512个字节

        SetPosition(n*512*40*/183940)

        n++;

    }

    //关闭文件

}

该例子表示一个文件的拷贝过程中,屏幕的滑动尺随着文件的拷贝过程而不停地移动滑动尺的过程。

    在定义中,滑动尺属于静态控件,它没有事件发生,所有的滑动尺的移动全部由用户程序控制。

11.14 多行文本编辑控件
多行文本编辑框控件是个矩形框的控件,它用来索取用户输入的多行文本串。编辑框控件可以由用户“键入”文本,其文本也可以方便地修改。它支持丰富的行编辑功能。支持块操作。

11.14.1 创建多行文本编辑框控件
TMultiEdit的构造函数接收一般的控件构造函数参数如坐标,显示颜色等以及支持编辑类特有的参数如输入缓冲区等。

下面代码用于生成定长输入的普通文本编辑:

TMultiEdit *Edit;

Edit = new TMultiEdit(4,2,26,1,BLACK_WHITE,WHITE_WHITE);

其中第一个参数表示输入框相对于父对话框的列坐标;第二个参数表示输入框相对于父对话框的行坐标;第三个参数表示输入框的宽度;第四个参数表示输入字母显示的前景颜色,本例采用黑前景白背景;第五个参数表示输入字母显示的背景颜色,本例采用白背景;

11.14.2 查询多行文本编辑框控件
用户经常需要查询编辑框控件,旨在取得输入的文本,将它存储起来以备后用,或者拷贝到另一个控件中。TMultiEdit存在数据成员AllEditHead,它是一个结构体指针,指向多行输入的内存中,您可以通过NextLine取得下一行文本,通过PreLine取得下一行文本。

11.14.3 修改多行文本编辑框控件
为了对多行文本编辑框控件设置初值,您可以直接引用TMultiEdit类的数据成员AllEditHead。比如,您可以拷贝一个字符串到多行文本编辑框中,当该控件显示时,如果数据成员不为空,系统就会显示其内容在多行文本编辑框中。这对编辑框赋初值比较有用。

[/quote:4bad7016f0]

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网