PB控件说明

更新时间:2023-12-06 13:57:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

[PB]-控件(一)

//////////////////////////////// 命令按钮-CommandButton-cb_1 图象按钮-PictureButton-pb_1 【事件】 ◆Clicked 控件单击时

◆Constructor

在窗口的打开事件之前立即触发 ◆Destructor

在窗口的关闭事件之后立即触发 ◆DragDrop

当被拖动对象释放时触发

◆DragEnter

被拖动对象的中心通过边缘进入时触发 ◆DragLeave

被拖动对象的中心离开时触发 ◆DragWithin

被拖动对象的中心位于其内时触发 ◆GetFocus

在接受焦点之前(在选中并激活之前)触发 ◆LoseFocus

当失去焦点时触发

◆Other

当非powerbuilder事件消息发生时触发 ◆RButtonDown

鼠标右键按下时触发 ◆Help

【属性】

命令按钮有24个属性,图形按钮除了具有和命令按钮完全相同的24个属性外,还有另外5个属性用来设置图形和文字的显示。 ▲Visible

取值为False时,不显示此按钮 ▲Enabled

取值为False时,按钮为灰色,不可用

▲Default

取值为True时,表示该按钮是缺省按钮,当用户没有选择控件,按Enter键时触发该按钮的Clicked事件

▲Cancel

取值为True时,表示当用户单击Esc键时,可以触发按钮的Clicked事件 ▲FlatStyle

//////////////////////////////// 列表框-listBox

图形列表框-pictureListBox

【属性】

listbox有35个属性,picturelistbox有40个属性,其中35个和listbox完全相同,另外5个用来设定图形的相关属性。

▲Sorted,指定列表框中的内容是否排序,不管数字还是字符都按照字符处理,按照ASCII大小进行排序

▲VscrollBar、HscrollBar,指定当项目纵向或横向显示不下时,是否显示滚动条

▲MultiSelect,此属性为True时表示使用鼠标可以直接同时选中多项 ▲ExtendSelect,也有进行多项同时选择的属性,但选择方法不同于

MultiSelect属性,必须配合Ctrl或Shift按钮,当同时指定这两个属性时,ExtendedSelect属性将会屏蔽MultiSelect属性

▲DisableNoScroll,此属性为True时,不管是否必须要滚动条,都显示滚动条;为False时只有在项目多,需要显示滚动条时显示滚动条

▲ItemPictureIndex[]

integer类型的只读数组,使用该数组可以获取每个图片项目的索引。该数组通过AddItem()和DeleteItem()函数修改。

▲PictureHeight

integer类型,标识图片在控件中显示的高度。只有当前在控件列表中没有项目时才能设置该属性。

▲PictureWidth

Integer类型,图片在控件中显示的宽度。该属性缺省值为0,表示使用添加图片时图片的缺省宽度。在添加图片之前应该首先设置好该属性,这样添加的图片才能按照该尺寸显示。

▲PictureMaskColor

long类型,图片的标志颜色,当使用AddPicture函数添加图片时,新添加的图片使用该颜色。

▲PictureName[]

数组类型,保存的是在初始化时添加的图片文件名称。注意,这里保存的是初始化时的文件名,运行过程中删除或者添加的图片不会影响该数组的内容。

【事件】

这两个控件的缺省事件都是SelectionChanged,当重新选择了项目时,触发该事件。该事件和DoubleClicked事件是经常使用的事件,除了这两个事件以外的其他10个事件和命令按钮的同名事件触发时机完全相同

【函数】

listbox总共有35个函数,经常使用的有14个。

★Reset

该函数用来清除列表框中的所有项目,使用方法是:listbox.Reset()。函数执行成功返回1,否则返回-1

★AddItem

在列表框最后添加一个项目,如果列表框的Sorted属性为True,则添加的项目重新排序。列表框的属性Item[]是一个记录列表框项目的数组,通过指定索引号可以获得项目的内容,但使用AddItem函数不能修改该属性。用该函数添加过项目以后就应该慎用Item[]了,否则会出现数组超界的运行错误,最好使用Text来引用列表框中项目的文字,该函数总是安全的。AddItem函数的使用格式是:listbox.AddItem(string)

★TotalItems

该函数可以读取列表框中总共有多少个项目。它的使用格式是:listbox.TotalItems()。该函数返回一个整型数值,表示列表框中总共有多少个项目。列表框的第一个项目的索引号是1,最后一个的索引号等于listbox.TotalItems()。

★State

该函数用来表示判断指定索引号的项目是否选中,使用格式是:

listbox.state(index)。返回值为integer类型,1表示指定索引号的项目是选中状态,0表示指定索引号的项目没有被选中。

★Text

该函数用来读取指定索引号的项目的内容,使用格式是:listbox.Text(index)。返回一个string类型的数值。

和该函数功能类似,列表框还有一个Item[]属性也可以返回指定索引号的项目的内容。但是和Text函数与很大的区别,该属性反应的都是列表框在创建初的内容,如果列表框使用了Sorted属性或者用AddItem、InsertItem、Reset、DeleteItem、Dirlist等都不能修改Item[]属性,也就是说,在使用了这些函数或属性修改了列表框中的内容或项目的排列顺序后,Item[]属性返回的仍然是列表框创建时的信息。

★DeleteItem

删除指定索引号的项目。语法:listbox.deleteitem(index)。返回-1表示失败,NULL表示参数为NULL,其他正整数表示删除后列表框中的项目数

★InsertItem

在指定索引号前插入内容为item的项目。语法:

listbox.InsertItem(item,index)。返回-1表示插入失败,NULL表示有参数为NULL,其他正整数表示插入项目在列表框中最后的实际位置。

★Dirlist

语法:listbox.dirlist(filespec,filetype,{statictext})。功能:在列表框中显示指定类型的文件。参数:listbox为要显示文件名的列表框,filespec为要显示文件的路径及后缀,statictext为窗口上的要显示路径的statictext控件名称,filetype表示文件的类型。返回值;NULL表示至少有个参数为NULL,True表示操作正确完成,False表示列表框不能正确显示指定文件。 filetype文件属性: 0 可读写文件 1 只读文件 2 隐含文件 4 系统文件 16 子目录 32 归档文件 16384 驱动器

32768 可读写文件以外的

*同时显示多种类型的文件,可以使用加号联结。例如同时要显示可读写、子目录、驱动器,参数filetype可以使用表达式 0+16+16384

★DirSelect

语法:Listbox.DirSelect(selection) 功能:如果目前列表框中的内容是使用函数Dirlist获得的,该函数会将用户在

列表框listbox中选择的项目的内容保存在string类型变量selection中;如果目前列表框中的内容不是使用Dirlist获得的,该函数返回的值不能正确反映实际的内容

返回值:NULL表示至少有一个参数是NULL,True表示用户选择的是目录、驱动器,False表示用户选择的是文件。 String ls_pathname String ls_pattern Ls_pattern = '*.txt'

If lb_1.DirSelect(ls_pathname) Then //用户选择的是目录或驱动器

lb_1.DirList(ls_pathname + ls_pattern,0) //显示用户选择的目录或驱动器下的文件 Else

//用户选择的是文件,进行其他相关处理 End If

★FindItem

语法:listbox.FindItem(text,index) 功能:在listbox列表框中从索引号为index+1的项目开始搜索,看是否有内容为text的项目。

返回值:没有找到或者发生错误则返回-1,有参数为NULL时返回NULL,正确执行并找到了匹配的项目则返回与之匹配的第一个项目的索引号。

*该查找是前面部分匹配。例,要查找“a”,项目“a”、“an”、“artist”都符合要求,而“a”在其他位置的,如“ca”就和要查找的不匹配。 例:在sle_1的Modified事件中,在lb_1查找所有和用户输入字符匹配的项目的索引号和内容。 int li_pos,li_pri

li_pos = lb_1.FindItem(this.text,0) li_pri = li_pos do

MessageBox(String(li_pos),lb_1.text(li_pos)) li_pri = li_pos

li_pos = lb_1.FindItem(this.text,li_pos) loop until li_pos <= li_pri

★SelectedIndex

语法:listbox.selectedIndex()

功能:在listbox列表框中查找第一个选中的项目。

返回值:如果找到选中项目,则返回该第一个选中项目的索引号;如果listbox为null则返回null,如果没有找到选中项目或者查找过程中发生了错误则返回-1。

★selectedItem

语法:listbox.SelectedItem() 功能:获取列表框listbox中选中项目的内容。通常在列表框不允许同时选中多行时使用,当允许多行同时选中时,经常使用state和text函数来获取选中项

目的内容。

返回值:如果有选中项目,则返回选中项目的内容,如果没有选中项目则返回空值\,如果listbox为NULL,则返回NULL。

★selectItem

语法:listbox.SelectItem(item,index)

功能:在不允许多选的listbox列表框的索引号为index之后查找内容为item的项目,如果找到则选中该项目。*该查找也是前面部分匹配,同函数finditem的匹配相同。当列表框允许多选时,该函数不起作用,这时应该使用finditem和setstate来实现该功能。函数setstate不影响已经选中行的状态。

返回值:如果正确执行并找到了匹配的项目,则返回匹配项目的索引号,如果没有匹配的项目,则返回0,如果发生了错误则返回-1,如果有参数为NULL,则返回NULL。

指定index:listbox.selectitem( itemnumbe)

★TotalSelected

语法:listbox.TotalSelected() 功能:获取在listbox列表框中选中的项目数。该函数只在列表框允许多选时起作用,在不允许多选列表框中,即使有选中,项目也返回-1。

返回值:正确执行时返回列表框中选中的项目数,没有选中项目时返回0,执行错误时返回-1,如果listbox为NULL,则返回NULL。

★SetState

语法:listbox.setstate(index,state)

功能:高亮显示指定的项目;不影响已经高亮显示的项目;state:true-select,fasel-not selected

retrun value:Integer. Returns 1 if it succeeds and -1 if an error occurs. If any argument's value is NULL, SetState returns NULL.

★controlname.addpicture(picturename)

其中controlname为图形列表框或者下拉图形列表框控件的名称;picturename为字符类型,是要添加的图形文件名称。

函数返回值:Integer. Returns the picture index number if it succeeds and -1 if an error occurs.

如果想添加pb系统提供的那些常用图片,比如想添加checkin!图片,可以使用下面的语句:

plb_1.addpicture(\

该函数的操作相当于在pictures属性页中的操作。

★controlname.deletePicture(index)

其中controlname为图形列表框或者下拉图形列表框控件的名称;index为integer型,是要删除的图片的索引号,如果指定的索引号不存在则不会删除任何图片。

返回值:Integer. Returns 1 if it succeeds and -1 if an error occurs.

////////////////////////////////

在PB中提供了三类条状控件,ScrollBar-滚动条、TrackBar-轨迹条和ProgressBar-进度条 ScrollBar(滚动条) 【属性】

▲MinPosition和MaxPosition

缺省值分别是0和100,用来指定滚动条上滑块的最左(最上)和最右(最下)位置时所代表的数值。

▲Position

缺省也是0,指滑块的位置。它是一个相对位置,相对于MinPosition和MaxPosition而言的。 【事件】

◆LineLeft和LineRight(对应LineUp和LineDown)

当单击横向滚动条左侧的小箭头时触发LineLeft事件,在该事件下编写脚本使小滑块向左移动;单击横向滚动条右侧的小箭头时触发LineRight事件,在该事件下编写脚本使小滑块向右滑动

◆PageLeft和PageRight(对应PageUp和PageDown)

当单击横向滚动条小滑块和左侧小箭头之间空白时触发PageLeft事件,在该事件下编写脚本使小滑块向左移动较大的距离;单击横向滚动条小滑块和右侧小箭头之间的空白触发PageRight事件,应该在该事件下编写脚本使下滑块向右移动较大的距离

◆Moved

当在小滑块上按下鼠标并移动时触发该事件,该事件下的脚本应该跟随鼠标移动的方向改变小滑块的位置

TrackBar(轨迹条)

该控件也是一个通过改变滑块位置来输入数据或显示信息的控件。和滚动条不同的是,使用该控件数值不能发生连续的变化,一般经常用来输入timer事件的时间间隔或者窗口的尺寸等

ProgressBar(进度条) 【属性】

▲MinPosition和MaxPosition

这两个属性的含义和ScrollBar的同名属性含义相同

▲Position

这是一个非常重要的属性,在脚本中读取或者设置该属性。它决定小滑块的当前位置,是一个相对于MinPosition和MaxPosition属性而言的相对量。可以用(MaxPosition – MinPosition)/Position算出当前位置 ▲SetStep

它指每次前进或后退的幅度,也是一个相对值,缺省为10

▲SmoothScroll

它指定进度条是否平滑前进,缺省为False。建议将该属性设置为True,这样界面显示效果好一些 【函数】

★OffsetPos

语法:control.OffsetPos(Increment) 功能:使进度条control中的光亮条前进increment长度。当到达或超过进度条的最大值时不能自动重新开始。例如,当前高亮条长度为70,进度条hpb_1的最大值为100,使用函数hPB_1.OffsetPos(40)只能使高亮条宽度为100,而不是10。

返回值:如果执行成功则返回1,否则返回-1。

★StepIt

语法:control.StepIt() 功能:使进度条control中的光亮条前进SetStep长度。当到达或超过进度条的最大值时可以重新开始。例如,当前高亮条长度为70,进度条hPB_1的最大值为100,使用函数hPB_1.StepIt(40)可以使高亮条宽度达到100后再到达10的位置。

////////////////////////////////

文本编辑:SingleLineEdit-单行编辑器、EditMask-屏蔽编辑器、MultiLineEdit-多行编辑器、RichTextEdit-富文本编辑器

文本显示:StaticText-静态文本控件、StaticHyperLink-静态联结 SingleLineEdit(单行编辑器) 【属性】

▲Visible

缺省为True。当为False时,该控件在窗口上隐藏。

▲Enabled 缺省为True。当为False时,该控件不能获得焦点,用户不能进行编辑和选中;控件背景为灰色。

▲DisplayOnly

缺省为False。当为True时,该控件中的文字不能被修改,并且也不能输入,但可以选中、复制。

▲Password

缺省为False。当为True时,在该输入框中输入的内容显示为“*”号,星号的数目等于输入的字符的数目,加密规则依赖于操作系统。其实际内容和用户输入的内容一致。

▲AutoHScroll

缺省为True,表示当用户输入的内容显示不下时,可以自动横向滚动光标,但是不显示滚动条。

▲HideSelection

缺省为True,表示只有当单行编辑器获得焦点时,才高亮显示选中文本。建议使用缺省值,因为将该属性设置为False,没有获得焦点时,选中的内容就高亮显示,这容易让用户造成错误。

▲Limit

缺省是0,表示没有长度限制。可以输入其他一个数字,表示该单行编辑框中最多接受用户输入的字符个数,最大数字是32 767。

▲TextCase

有三个选项,upper!表示用户输入的内容中的字母都自动转换成大写,lower!表示都自动转换成小写,anycase!表示不做转换。

▲Text

这是该控件运行时最经常使用的一个属性。可以给该属性赋值来将特定信息显示在单行编辑器中,也可以读取该属性而获得单行编辑器中的内容。设计状态下,在Text属性输入框中录入的文字在窗口刚刚打开时显示在单行编辑框中。 ▲Border

是否显示边框,缺省为True

【事件】

单行编辑器提供了12个事件,Modified是经常使用的事件,其他事件和命令按钮的同名事件完全相同

◆Modified

该事件的触发时机是在编辑器中输入内容后,焦点离开该编辑器时

【函数】

单行编辑器提供了很多的函数,其中需要掌握的有10个经常使用的函数,这10个常用函数是CanUndo、Clear、Copy、Cut、Paste、SetFocus、ReplaceText、SelectedStart、SelectedText、SelectText。其中,前面的6个函数是无参数函数,可以直接用editcontrolname.function()形式使用,从字面意思可以理解函数的功能。后面的4个函数和下拉列表框中的同名函数用法相同

MultiLineEdit(多行编辑器)

【属性】

它的很多属性使用缺省值即可满足要求,常用属性有14个,其中Visible、Enabled、DisplayOnly、AutoHScroll、HideSelection、RightToLeft、Border、Case、Limit和单行编辑器的同名属性意义相同。还有以下5个属性需要关注 ▲HscrollBar

是否显示横向滚动条,缺省为False。当该属性为True时,显示横向滚动条,某行文字的宽度大于控件的宽度,则滚动条可用,否则灰色显示不可用。当属性为False时,输入的文字大于控件宽度,则自动换行。

▲VscrollBar

是否显示纵向滚动条,缺省为False。当该属性为True时,显示纵向滚动条,如果文字的高度大于控件的高度,则滚动条可用,否则灰色显示不可用。当属性为False时,输入的文字大于控件高度时,就不允许再增加新的数据行。 ▲AutoVScroll

是否在需要时自动显示纵向滚动条,缺省为False。如果设置为True,在当前内容显示满控件时,增加新的数据行将会出现纵向滚动条。

▲IgnoreDefaultButton

是否忽略Enter按钮,缺省为False。如果属性为True并且当前焦点在多行编辑器中,这时使用Enter键则会在多行编辑器中增加一个新行;如果属性为False,则会触发窗口上Default按钮的Clicked事件。

▲Alignment

文本的对齐方式,是一个枚举型取值,有Center!、Justify!、Left!、Right!四个取值,缺省为Left!。

【事件】

多行编辑器提供了12个缺省事件,触发时机和单行编辑器的12个事件完全相同。经常使用的事件也是Modified,参考单行编辑器

【函数】

多行编辑器也提供了很多的函数,和单行编辑器的同名函数的用法及注意事项完全相同,需要注意的是两个单行编辑器没有的函数LineCount和LineLength。这两个函数经常配合使用,对多行编辑器中的文本逐个字符处理。

★LineCount()

可以获取editname中数据的实际行数,不管每行后面是否有回车或换行符号。函数执行错误返回-1,如果editname为Null,则返回Null。

★LineLength()

可以获取editname中当前光标所在行的字符数,包括空格。执行错误返回-1,当editname为Null时返回Null

EditMask(屏蔽编辑器)

【属性】

EditMask控件的许多常用属性和SingleLineEdit的同名属性都相同。另外,还有3个属性需要特别地关注,它们是Spin、Increment和MinMax,这些属性共同规定了使用微调小按钮录入数据的一些动作和特征

▲MaskDataType

使用一些特殊的符号可以指定EditMask能够接受的数据格式,首先使用属性MaskDataType指明EditMask要接受的数据类型,该属性是EditMask控件非常重要的属性。该属性的取值是枚举类型,有6个取值,它们是:DateMask!、DateTimeMask!、DecimalMask!、NumericMask!、StringMask!、TimeMask! 不同的数据类型使用不同的格式符号,例如#表示数字,!表示一个大写字母等等,这些都可以在属性窗口的Mask输入框中输入或者直接选择,也可以在运行时使用脚本动态设定。设定完MaskDataType属性之后,就应该设置Mask属性了,该属性的取值是一个字符串,规定EditMask控件的数据格式,例如,em_1.Mask=\(###)########\可以设置电话号码格式

▲Spin

该属性指定是否使用微调输入数据,缺省是False。如果属性为True,每次用鼠标单击微调按钮时,向上箭头则逐渐增加,向下箭头则逐渐减小,步长是Increment属性规定的值。

▲Increment

规定使用微调时输入内容每次增大的幅度。该属性只有当Spin属性为True才起作用,并且只对日期类型或者数值类型起作用。 ▲Min、Max

用来规定最大和最小值。

经常使用editmaskname.text来读取或设置它的文字。也可以在运行时使用脚本修改该属性,格式为用两个波浪号(~)联结的数字所构成的字符串,例如:em_1.MinMax=\

【函数】

该控件提供了很多的函数,但绝大多数都和多行编辑器的同名函数功能或用法相同。只有函数GetData需要关注一下

★GetData()

该函数的语法是:editmaskname.GetData ( datavariable )

功能是获得EditMaskName中的原始数据,并保存在Datavariable变量中。 Datavariable变量的类型和屏蔽编辑器中的数据类型一致,可用的数据类型有date、DateTime、decimal、double、string和time。成功执行则返回1,执行过程中发生错误则返回-1,如果参数为Null则返回Null。 注意该函数读取的是屏蔽编辑器中原始的数据,而不是实际显示的格式(可以用editmaskname.text获得显示格式的数据)

RichTextEdit(富文本编辑器) 【属性】

▲DocumentName

打印编辑器中的内容时,文件在打印队列中的名称。

▲RulerBar

是否显示标尺,缺省为False。标尺可以作为编辑时对齐、调整间距的参照。如果PopMenu属性为True,用户在程序运行时就能通过右键弹出菜单来决定是否显示标尺。

▲TabBar

是否在编辑器的编辑区域上方显示Tab工具条。使用该工具条可以灵活设定Tab按钮所前进的距离,在工具条上用鼠标单击即可添加一个Tab位。如果PopMenu属性为True,用户在程序运行时就能通过右键弹出菜单来决定是否显示Tab工具条。

▲ToolBar

是否显示工具条。工具条可以提供设定显示格式、对齐方式、字体等一些工具,缺省为False。如果PopMenu属性为True,用户在程序运行时就能通过右键弹出菜单来决定是否显示工具条。

▲HeaderFooter

指定在编辑器上是否有页眉和页脚。建议选中该属性,因为如果没有该属性,当用户保存具有页眉或页脚的文件后就会丢失页眉或页脚;如果设置了该属性就不

会丢失,打开没有页眉和页脚的文件时也不会有冲突。该属性只能在设计状态下设定,在运行时只能读取该属性。

▲PopMenu

是否允许用户在运行时使用鼠标右键弹出菜单。该属性缺省为False,建议设置为True,因为这样用户有更大的灵活性,可以设定自己喜欢的工作环境,这是Windows应用程序界面设计所提倡的。

▲ReturnVisible

是否显示回车符号,缺省为False。回车符号是行的结束符号,通常情况下是隐含的。如果PopMenu属性为True,用户在程序运行时就能通过右键弹出菜单来决定是否显示回车符号。

▲InputFieldsVisible和InputFieldNamesVisible

当数据由DataWindow提供时使用该属性,它们控制用户是否可以看到数据字段和名字。

▲WordWrap

到达一行末尾时是否自动换行。 ▲PicturesAsFrame

控制是否将图片显示为图文框。

▲DisplayOnly

是否文档仅仅用于显示,而不允许用户修改。

▲InputFieldBackColor

输入字段的背景颜色,当数据由DataWindow提供时,该属性有效。

▲UndoDepth

可以撤消历史操作的数目,每次使用Ctrl+Z快捷键或者执行函数undo()时,撤消一个操作。

【事件】

◆FileExists

当用户试图将控件中的内容保存到已经存在的文件时触发该事件,该事件的参数filename可以在脚本中直接使用,返回值1表示停止处理,0表示继续处理。一般在该事件中编程让用户确认是否覆盖已经存在的文件。下面是该事件下的一个典型脚本:

integer li_rtn //保存用户的确认信息

li_rtn = Messagebox(\确认\已经存在,是否覆盖? \

If li_rtn = 1 Then //用户选择了“yes”

return 0 //保存 Else

return 1 //不保存 End If

◆InputFieldSelected

当用户选择一个输入字段(在该字段内双击或按了Enter键)时触发该事件。 ◆Modified

当对控件中的内容做第一次改动时触发该事件。

◆PictureSelected

当用户在一个位图上双击或者按下了Enter键时触发该事件。通常在该事件中调用相应的位图编辑软件。

◆PrinterFooter

当要打印每页的页脚时触发该事件。该事件的两个参数CurrentPage和TotalPages可以在脚本中直接使用,表示当前页号和总页号。

◆PrinterHeader

当要打印每页的页眉时触发该事件。该事件中的两个参数和PrinterFooter事件中的两个参数完全相同。

◆RButtonDown

当PopMenu属性为False并且用户在该控件上按下鼠标右键时触发该事件。 ◆RButtonUp

当PopMenu属性为False并且用户在该控件上松开鼠标右键时触发该事件。

StaticText(静态文本控件)

静态文本控件经常用来显示一定的提示信息,其中的文字在运行时用户不能进行编辑,可以用脚本改变其显示的内容。该控件在运行时不能获得焦点,即使将它的Tab Order值设置为非0也无法获得焦点。

该控件的缺省属性中惟一应该修改的就是text,其他没有必要也很少进行修改。 该控件虽然也提供了很多的事件,例如Clicked事件、DoubleClicked事件等,但很少在该控件上编写脚本,因为该控件一般就是用来显示信息,很少希望用户和该控件进行交互

StaticHyperLink(静态联结) 该控件也提供了很多的事件,但很少在上面进行编程。在该控件上单击鼠标即可自动调用操作系统上的缺省浏览器,打开该控件URL属性指定的页面

////////////////////////////////

下拉列表框-dropdownlistbox、图形下拉列表框-dropdownpicturelistbox 【属性】

下拉列表框提供了37个属性,图形下拉列表框除了这37个属性外,还有5个专门与图形有关的属性。因为具有列表框的特性,所以很多同名属性和Listbox的含义相同

▲AllowEdit

该属性设置是否允许用户输入新的项目,缺省为不允许

▲AutoHScroll

该属性设置当录入新项目或者删除数据时是否允许自动滚动编辑框,缺省不允许。下拉列表框的宽度大于Limit规定的数值,则没有必要设置该属性;否则就应该设置该属性为True。该属性实际上是单行编辑器的特征。 ▲Enabled

该属性设置是否允许进行选择,缺省值是True

▲Limit

该属性用来规定用户可以输入的字符的最大宽度,0表示没有限制,最大是32 766个,缺省是0。该属性是单行编辑器的特征。 ▲ShowList

该属性规定是否总显示下拉列表

▲Sorted

和列表框的属性相同,该属性定义各个项目是否自动排序显示,缺省为False。当该属性为True时,动态添加到下拉列表框中的项目会自动排序显示到适当的位置

▲ItemPictureIndex[]

integer类型的只读数组,使用该数组可以获取每个图片项目的索引。该数组通过AddItem()和DeleteItem()函数修改。

▲PictureHeight

integer类型,标识图片在控件中显示的高度。只有当前在控件列表中没有项目时才能设置该属性。

▲PictureWidth

Integer类型,图片在控件中显示的宽度。该属性缺省值为0,表示使用添加图片时图片的缺省宽度。在添加图片之前应该首先设置好该属性,这样添加的图片才能按照该尺寸显示。

数据。这样处理,不仅可以加快窗口的打开速度,还可以避免一些不必要的数据检索,因为有些标签页可能在用户的某次工作中根本就用不到。 //////////////////////////////////// ListView 【其他】

■控件显示样式

ListView控件可以用下面的四种形式显示信息。

大图标方式:每个项目都显示为大图标,图标下面的标签显示一定的文字信息。用户可以在该控件内拖动图标。

小图标方式:项目显示为小图标,并且每个项目的右边都有一个标签。用户也可以在视图内拖动选中的图标。

列表方式:项目显示为小图标,每个图标右边都有一个标签,并且按照一定的顺序以列优先方式显示,显示样式和上面的相同。

报表方式:项目以多栏列表显示,左边的栏显示图标和标签,用户可以根据自己的需要指定任意数量的附加栏并可以设定每个栏内显示的相应数据。

■典型编程

如何使用数据动态构建ListView控件、在不同的显示样式之间切换以及对选中对象进行处理,这是该控件最常用的三种编程情况。下面分别加以介绍。

该控件中显示的数据可以是静态的,在开发时就可以确定;也可以是动态的,需要根据用户的数据改变该控件的显示内容,这种情况更具有普遍性。如何根据用户的数据初始化该控件,这是该控件的一个非常典型的编程。编程思路和开发环境中的设定过程是相似的,也需要首先设定要添加项目的label,data以及要使用图标的索引号。下面是一段典型的编程: ListViewItem llvi_cust Int li_numrows,li_index DataStore lds_curst SetPointer(HourGlass!)

Lds_cust = Create datasotre

This.DeleteItems() //首先清除ListView中其他的项目 //为报表显示样式创建多个列

This.AddColumn(\公司\This.AddColumn(\联系地址\This.AddColumn(\电话\//检索数据

lds_cust.dataobject = \lds_cust.SetTransObject(SQLCA) li_numrows = lds_cust.Retrieve() //如果没有检索到数据则直接返回 If li_numrows <= 0 Then

Destroy lds_cust //释放DataStore对象的内存空间 Return //返回

End If

For li_index = 1 to li_numrows //如果检索到了数据,对数据逐条处理 llvi_cust.label = lds_cust.Object.company_name[li_index] + \lds_cust.Object.address[li_index] + \lds_cust.Object.phone[li_index] //项目标签

llvi_cust.data = lds_cust.Object.id[li_index] //项目的数据 llvi_cust.PictureIndex = 1 //项目的图片 This.AddItem(llvi_cust) //添加该项目 Next

Destroy lds_cust //释放DataStore对象的内存空间

上面的脚本使用DataStore来提取数据,如果检索到数据,就将每条数据添加到ListView控件中,如果没有检索到数据就直接退出。添加项目到ListView时,首先为ListViewItem类型的变量赋值,包括label,data和pictureindex三项,赋值完毕后将该变量的值添加到ListView中。

如何在不同的显示样式之间进行切换?ListView控件的属性View是一个枚举类型的属性,通过修改该属性使其取不同的值可以改变该控件的显示样式。可以使用的取值有:

ListViewSmallIcon! 表示以小图标样式显示。 ListViewLargeIcon! 表示以大图标样式显示。 ListViewList! 表示以列表样式显示。 ListViewReport! 表示以报表样式显示。

比如,可以设置多个命令按钮,不同的按钮被点击时都改变ListView的显示样式。在其中的“报表显示样式”按钮上可以编写如下脚本: lv_1.View=ListViewReport!

当然,还可以在一个菜单的各个菜单项中编写脚本,当在ListView控件上使用鼠标右键时弹出该菜单。具体方式取决于开发人员的编程风格和用户的具体要求。 如何提取选中项目的内容?实际上显示样式只是一个表面问题,而提取选中项目的内容才是最终的目的。应该首先判断哪个项目选中,然后再读取选中项目的数据。判断项目是否选中可以通过SelectedIndex函数、ListViewItem类型对象的Selected属性等来实现。读取指定项目的数据可以通过ListViewItem类型对象的Label和Data属性来获取。下面是一个最复杂的典型编程,该程序从一个允许同时选中多个项目的ListView控件中读取所有选中项目的标号和数据,脚本如下:

Int li_index

ListViewItem llv_item

For li_index = lv_1.SelectedIndex() To lv_1.TotalItems() lv_1.GetItem (li_index,llv_item) If llv_item.Selected Then

MessageBox(\提示\是选中的~r~n标号:\llv_item.label + \数据:\

End If Next

上面的脚本首先定义一个ListViewItem类型的变量,使用GetItem将ListView的项目读取到该变量中,通过判断该变量的Selected来得知项目是否选中。函数SelectedIndex来获取第一个被选中的项目的索引号,循环直到处理完最后一个项目。在其他很多资料上都介绍的使用State函数循环处理多选ListView中的项目,实际上是行不通的。

另外,如果在ListView控件的相关事件中编程,可以直接使用事件的相关参数来获取选中的项目。比如,在DoubleClicked事件中编写脚本,读取用户双击项目的数据,并根据该数据做一定的处理,这也是一种比较常用的典型编程方法。下面是该事件中一段典型的脚本: ListViewItem llv_item This.GetItem(index,name) SetPointer(HourGlass!)

Dw_1.Retrieve(llv_item.Label)

上面的脚本在用户双击选中ListView中的项目时读取该项目的标签,并以该标签作为参数检索其他的数据窗口。 【属性】 ListView属性

▲Visible

布尔类型的变量,表示ListView是否可见。该属性缺省为True。 ▲Enabled

布尔类型变量,表示ListView是否可用。该属性缺省为True。

▲FixedLocations 布尔类型变量,表示用户是否可以拖动控件中的项目来改变其位置。该属性缺省为False。

▲EditLabels

布尔类型变量,表示用户是否可以在控件中编辑项目的标签。该属性缺省为False。

▲AutoArrange

布尔类型,表示是否自动排列图标。该属性的缺省值为False。

▲ExtendedSelect

布尔类型,表示用户是否可以选择多个项目。该属性的缺省值为False,是一个非常重要的属性。

▲ButtonHeader

布尔类型,当为True时报表视图中的标题显示为按钮而不是标签,该属性的缺省值为True。

▲DeleteItems

允许用户使用Delete键删除列表中的项目。该属性缺省为False。

▲HideSelection

如果该属性为True,当控件失去焦点时,选中的项目不显示选中状态;如果该属性为False,当控件失去焦点时选中项目仍然显示为选中状态。该属性的缺省值为True。

▲LabelWrap

该属性设置项目的文字是否换行显示还是只在一行显示。该属性的缺省值为True,表示换行显示。

▲Scrolling

该属性表示控件是否可以该动显示其中的项目。缺省为True。 ▲ShowHeader

表示标题是否显示在报表视图中。该属性缺省为True。

▲CheckBoxes

表示状态图片是否可以被CheckBox替代。如果设置该属性为True,则CheckBox缺省为非选中状态。该属性缺省为False。

▲TrackSelect

该属性可以指定当鼠标在项目上移动时是否以不同的颜色表示。当该属性设置为True时,鼠标在项目上停留则以不同的颜色表示,当停留一定时间后自动选中该项目。

▲OneClickActivate

表示鼠标单击是否激活ItemActivate事件。当该属性取值为True时,单击鼠标触发ItemActivate事件,并且鼠标位于某项目上时导致项目的颜色改变(效果和TrackSelect相同)并且鼠标的形状为手型。 ▲TwoClickActivate

表示鼠标双击是否触发ItemActivate事件。

▲GridLines

指定报表样式时是否显示网格线。该属性缺省为False。

▲HeaderDragDrop

该属性指定在报表样式中列头是否可以拖动来改变列的顺序。该属性缺省为False。

▲FullRowSelect

该属性指定在报表样式中是否选中整行的数据。该属性的缺省值为False。 ▲UnderlineCode

当0neClickActive属性为True时,该属性有效。该属性指定没有选中的项目是否显示下划线,为True时表示显示。

▲UnderLineHot

不管0neClickActive还是TwoClickActivate属性为True,该属性都有效。该属性取值为True,表示Hot Tracking有效,并且高亮显示的项目带有下划线。该属性的缺省值为False。

▲Border

该属性指明ListView控件是否有边框,缺省值为True。

▲BorderStyle

枚举类型的属性,可以设定ListView控件的边框类型。当Border属性取值为True时该属性有效。缺省为StyleLower!。该属性的可用值有StyleBox!,StyleLowered!,StyleRaised!和StyleShadowBox!。

▲SortType

枚举类型的属性,缺省值为Unsorted!,表示不进行排序。可以使用的值还有Ascending!(升序),Descending(降序),UserDefined!(用户定义)和Unsorted!(不排序)。

▲View

枚举类型的属性,表示该控件中的项目初始化时的显示样式,缺省值为

ListViewLargeIcon!,为大图标显示。可以使用的值有ListViewLargeIcon!(大图标显示样式),ListViewSmallIcon!(小图标显示样式),ListViewList!(列表显示样式)和ListViewReport(报表显示祥式)。

▲Accelerator

为该控件定义快捷键。快捷键允许用户使用键盘选中某个项目,而不是使用鼠标。快捷健在项目标签的第一个字母下面显示下划线表示。

ListViewItem属性

ListView控件的结构比较复杂,使用该数据结构有助于简化对该控件的操作。该数据结构只有少数的函数,大部分时候使用该控件的属性来操作,或者是给该类型的数据赋值后将其插入到ListView控件中。 ListView控件最重要的数据结构ListViewItem,该结构用来保存ListView控件中每个项目的信息。它具有以下属性: ▲CutHighLighted 布尔类型属性,当该属性为True时项目高亮显示,并且是进行剪切操作的目标。

本文来源:https://www.bwwdw.com/article/fipt.html

Top