几种vcl构件的用法
副标题#e#
ListBox
ComboBox构件
Label构件
按钮VCL
BitBtn构件
SpeedButton构件
单选钮与复选框
ScrollBar构件
File Open
File Save对话框
Color对话框
Find和Replace
ListBox和ComboBox构件的用途很广的构件。暗示尺度Windows列表框,用户可以从它的选项清单中选择选项。假如列表框中的项目太多,无法一次显示完,则会呈现转动条,以便会见列表框中的其它项目。新术语 有些列表框是所有者绘制的列表框。在所有者绘制的列表框中,编程人员要认真绘制列表框中的项目。假如需要,可以生成所有者绘制的列表框。所有者绘制的列表框很常见,只是你不必然认识到了罢了。先容定制C++ Builder东西条,个中先容了C++ Builder东西条编辑器对话框,个中包括两个列表框,左边的列表框是普通列表框,列出可以选择的按钮组,而右边的列表框则是个所有者绘制的列表框,显示东西条上会显示的实际按钮和按钮成果的文字说明。组合框是个专门列表框。实际上,组合框是列表框与编辑控件的组合。用户可以在列表框中选择,也可以在编辑部门输入数值。用户在列表框中选择时,该项目即放在编辑控件中。组合框有三种,详细范例取决于Style属性。表8.5列出了组合框范例及其说明。合框范例项目说明Simple只是在列表框上面放一个编辑控件。用户可以在列表框中选择,也可以在编辑部门输入数值Drop-down雷同于简朴样式,只是列表框部门最初不显示,而是提供一个下拉按钮,让用户欣赏清单和选择选项。用户也可以在编辑部门输入数值Drop-down list这种组合框限制更多。和下拉样式一样,列表框部门最初不显示。用户可以单击下拉按钮欣赏清单和选择选项,但不能在编辑部门输入文本。用这个样式时只能在预定选项中选择图8.4显示了ComboBox测试措施运行的环境,从中可以体会每种组合框的特点。
ColumnsListBox包括列表框中的列数,让这个属性大于1可以生成多列。缺省为0ExtendedSelectionListBox确定是否答允扩展选择。扩展选择利用户能用Shift+单击和Ctrl+单击选择项目。MultiSelect配置为false时无效。缺省为true
IntegralHeightListBox配置为true时,调解列表框高度以确保显示部门行。配置为false时列表框可以显示部门行。缺省为falseItemHeight两者配置控件中项目标高度。用户所有者绘制的列表框和组合框。缺省为13Items两者包括列表框中的项目表,是个TStrings实例(详细属性和要领见本章前面先容TStrings的部门)MaxLengthComboBox用户可以在组合框编辑部门输入的最大字符数。同于编辑控件的MaxLength。缺省为0(无限)MultiSelectListBox配置为true时,列表框中可以选择多个项目。缺省为falseSorted两者配置为true时,列表框项目按升序分列,配置为false时不排序缺省为false
StyleComboBox提供组合框的样式选项:
csSimple,
csDropDown
csDropDownList,
lbOwnderDrawFixed,
csOwnerDrawVariable,缺省为csDropDownListBox提供列表框的样式选项:lbStandard,lbOwnderDrawFixed,和csOwnerDrawVariable,缺省为lbStandardTabWidthListBox配置列表框中标签的宽度(像素),缺省为0TextComboBox包括组合框编辑部门的文本。运行属性ItemIndexListBox包括当前所选项目标索引,0和第一个项目,1暗示不选项目。写入时,选择指定的索引SelCountListBox包括多项选择列表框中选择的项目个数SelectedListBox选择指定项目时返回true,不然返回falseSelLengthComboBox包括组合框编辑部门当前所选文本的长度SelStartComboBox包括组合框编辑部门当前所选文本的起点,编辑控件中第一个字符为0SelTextComboBox包括编辑控件中当前所选文本TopIndexListBox返回列表框顶部的项目,可以将顶部项目配置为某个列表框项目和前面先容的编辑构件一样,列表框与组合框的要领不多。Clear()要领排除控件的所有数据,ItemAtPos()要领返回指定x、y坐标处的列表框项目,SelectAll()要领选择组合框编辑部门的文本。列表框与组合框中最常用的事件是OnClick事件,可以确定列表框中何时举办了选择。说明 单击组合框编辑部门或下拉按钮不会触发OnClick事件,只有单击组合框的列表部门时才会触发OnClick事件。OnChange事件可以和编辑控件中一样触发组合框编辑部门的变革。OnDropDown事件检测是否单击了组合框下拉按钮。OnMeasureItem和OnDrawItem事件用于所有者绘制的列表框和所有者绘制的组合框。
#p#副标题#e#
按钮VCL包括几个可以在应用措施中运用的按钮,尽量它们不全是基于尺度Windows按钮控件,但都放在这里先容。先容详细按钮构件之前,先要先容一些根基常识。说明 配置按钮的Caption属性时,象配置菜单项目标Caption属性一样利用和号(&),和号后头的字符会加上下划线,可以作为按钮的加快键。
#p#分页标题#e#
况下,ModalResult属性配置为mrNone(即0)。这个值用于窗体上的普通按钮,不封锁窗体。假如ModalResult属性利用非0值,则按下按钮时窗体封锁,并返回ModalResult属性值。譬喻,假如将按钮放在窗体上并将ModalResult属性配置为mrOK,则按下按钮时窗体封锁,并返回ModalResult属性值mrOK(1)。这样就可以体例下列代码:
int result = MyForm>ShowModal();
if (result == mrOK) DoSomething();
if (result == mrCancel) return;
mrNone0mrOk1
mrCance2
mrAbort3mrRetry4
mrIgnore5
mrYes6
mrNo7
mrAll8
mrNoToAll9
mrYesToAll10说明 按钮不必然要利用预界说ModalResult属性常量,也可以用其它数值。譬喻,假设有个自界说对话框可以用各类按钮封锁,则可以对每个按钮赋予差异的ModalResult值(譬喻100、150、200),然后就知道是哪个按钮封锁了对话框。任何非0的值都有效,只要不高出int的取值范畴。DefaultDefault属性是按钮的另一重要属性。Windows具有处理惩罚对话框的尺度机制,个中一个特点如下:假如核心在按钮以外的控件上而用户按键盘上的Enter键,则对话框的表示和用户单击缺省按钮时一样,缺省按钮就是配置了BS_DEFPUSHBUTTON样式的按钮(凡是是OK按钮)。这个特性是编程人员的克星,数据输入人员诉苦已久。Default属性可以将窗体上的一个按钮配置为缺省按钮。这个属性的缺省值为false。为了将窗体上的一个按钮配置为缺省按钮,将其Default属性配置为true。假如不将任何按钮的Default属性配置为true,则用户按Enter键时窗体不封锁。说明 用户按Enter键封锁窗体时,先挪用缺省按钮(如有)的OnClick处理惩罚器再封锁窗体。
Cancel属性与Esc键共同,就象Default属性与Enter键共同。用户按Esc键封锁窗体时,ShowModal()返回值为Cancel属性配置为true的按钮的ModaResult值。假如没有按钮的Cancel属性配置为true,则用户按Esc封锁窗体时返回mrCancel。说明 单击系统封锁框或按Alt+F4封锁窗体时ShowModal()也会返回mrCancel。但按Esc键时ShowModal()返回值为Cancel属性配置为true的按钮的ModaResult值,先挪用Cancel按钮的OnClick处理惩罚器再封锁窗体。假如用户单击系统封锁框或按Alt+F4封锁窗体,则不挪用OnClick处理惩罚器。必需思量用户利用窗体的差异要领。说明 多个按钮的Default属性可以配置为true,同样,多个按钮的Cancel属性也可以配置为true。可是,用户按键盘上的Enter键时,挪用Default属性配置为true的按钮中跳表顺序为最先的按钮,同样,用户按键盘上的Esc键时,ShowModal()返回Cancel属性配置为true的按钮中跳表顺序为最先的按钮的ModalResult值。Enabled前面先容一般构件时曾先容过Enabled属性。这个属性用于按照措施当前状态或特定窗体当前状态打开或关掉按钮。按钮关掉时,Enabled属性配置为false,按钮不起浸染,上面的文字变灰,对付带位图的按钮,位图也自动变灰。Button构件只有一个有趣的要领:Click()要领,模仿鼠标单击挪用按钮的Click()要领时,就象单击按钮时一样,执行按钮的OnClick事件。和事件一样,凡是只用OnClick事件。下面要先容C++ Builder提供的各类按钮构件。Button构件8.6.4Button构件尺度Button构件并不大度,但做了大量事情。尺度Button构件自身已很完备,缺省Height属性值为25像素,缺省Width属性值为75像素。凡是只要将按钮放在窗体上并响应其OnClick事件即可。
BitBtn构件BitBtn构件是扩展构件以增加成果的典型。这里扩展尺度Button构件以便在按钮外貌上显示位图。BitBtn构件比Button构件多几个属性,这些属性配合打点按钮上的位图和位图与按钮文本之间的部署,将在下面几节先容。GlyphGlyph属性暗示按钮上的位图,其数值是一个图形。新术语 Glyph图形凡是是Windows位图文件(.BMP)。Glyph自己由一个或几个位图组成,暗示按钮的四种状态:起、落、关掉和按住。假如生本钱身的按钮,大概只要提供一个Glyph,然后由BitBtn构件修改成暗示别的三种状态。单击按钮时,位图向右下方移动;关掉按钮时,位图变灰。按下状态的位图与泛泛一样,只是按钮外貌酿成按下状态。假如提供多个位图,则每个位图的高度和宽度应沟通,并包括在位图带中。C++ Builder所带的位图提供了两个Glyph。
SpeedButton构件SpeedButton构件和Panel构件一起用于成立东西条,它与Button和BitBtn构件差异,不是窗口化构件,即不能跳表也不能接管输入核心。另一方面,SpeedButton构件又与BitBtn构件有一些配合之处,譬喻Glyph属性的处理惩罚方法在SpeedButton构件中和BitBtn构件中完全一样,这里不再一一重述。但这里要先容它们间的两个主要不同。缺省环境下,快速按钮是方形的,是25×25像素。快速按钮可以取任何尺寸,也可以包括文本,但凡是不包括文本。快速按钮有一些特定的属性,将在下面几节一一先容。说明 C++ Builder 1.0中生成东西条的要领用Panel构件并在上面放各类构件(主要是SpeedButton构件)。C++ Builder 3.0提供了Toolbar构件,能更好地生成东西条。Toolbar构件有一些利益,但用起来更巨大。GroupIndex快速按钮可以组合成象单选钮一样(单选钮框”中先容)。按下组中一个按钮时,它保持按下状态,原先按下的按钮弹起来。为了组合快速按钮,只要对组中所有按钮赋予沟通GroupIndex属性值(缺省值为0,暗示不在组中)。试举譬喻下:1. 生成空缺窗体并在窗体上放五个快速按钮(我不想在这个简朴例子中放上按钮位图,但读者也可以这么干)。2. .选择所有按钮并将GroupIndex属性值变为1,这样所有按钮的GroupIndex属性都酿成1。3. 可选:将一个按钮的Down属性变为true。4. 单击Run按钮编译和运行措施。措施运行时,单击几个按钮。留意一次只有一个按钮显示按下状态。GroupIndex属性赋予非0值时,可以看出快速按钮的表示有所改变。GroupIndex属性值为0的按钮单击时会弹回,而快速按钮组中的快速按钮单击时保持按下状态。AllowAllUp缺省环境下,组中随时要有一个按钮处于按下状态,但也可以将AllowAllUp属性配置为true以改变这点,将一个按钮的AllowAllUp属性配置为true时,组中所有按钮的AllowAllUp属性配置为true。这样就可以选择组中一个按钮或一个都不选。
#p#分页标题#e#
GroupIndex属性必然要用窗体上其它构件不消的值。用户单击按钮时,它保持按下状态,再次单击时,它弹起来。Down读取Down属性时,假如按钮保持按下状态则返回true,不然返回false。写入Down属性时,可以在按钮按与不按之间拔动。假如快速按钮不是组中成员,则写入Down属性无结果。
单选钮与复选框尽量单选钮与复选框是专门的按钮,但最终照旧按钮。这里不想花大量时间先容这些构件,因为它们很容易实现。RadioButton和CheckBox构件都有个Checked属性,可以配置核选状态和读取当前核选状态。单选钮凡是用在按钮组中,凡是暗示选项组中一次只能选择一个选项(如前面先容的快速按钮组)。尽量单选钮可以单独利用,但凡是不倡导这么用,以免让用户费解。想把单选钮单独利用时,该当改用复选框。窗体上的任何按钮均被自动看成同一组中的一部门。假如有多组单选钮,每组需要独立操纵,则该当利用RadioGroup构件。这个按钮可以在一组单选钮周围加上三维帧和标题,成立单选钮组。试举例说明如下:1. 生成空缺窗体或用上一操练中生成的窗体,放上一个RadioGroup构件。2. 找到Items属性并双击Value列。3.呈现字串清单编辑器,在字串清单编辑器中输入下列语句:Redtailed Hawk Peregrine FalconGyrfalconNorthern Goshawk4.单击OK封锁字串清单编辑器。组框中发生包括所输入文本的单选钮。5.将单选钮组的Caption属性变为Apprentice Falconers Can Legally Posses:6.单击Run编译和运行措施。单击一个单选钮时,前面选择的按钮如期弹出。操作RadioGroup构件可以在一个窗体上放多组单选钮。和前面先容的列表框与组合框一样,RadioGroup构件也有ItemIndex属性,可以在运行时用于确定组中选择了哪个项目。说明 也可以用GroupBox构件放单选钮,GroupBox构件不如RadioGroup构件利便,但越发机动。组框中可以放任何范例的控件。放在组框中的控件和组框自己可以在设计时作为一个单位移动。CheckBox构件可以打开和关掉选项或向用户暗示项目当前打开或关掉。复选框最多有三种状态:打开、关掉和变灰。假如复选框的AllowGrayed属性配置为false,则只能复选或不选,而AllowGrayed属性配置为true时则可以取三种状态中任何一种。变灰状态是由措施处理惩罚的。换句话说,你可以确定应用措施中变灰的寄义。假如AllowGrayed属性为false(缺省),则可以用Cheched属性确定复选框是否核选。AllowGrayed属性为true,则要用State属性确定或配置复选框状态。这个属性的取值为cbChecked、cbUnckecked和cbGrayed。提示 有时要用复选框暗示某个特性的开关状态而又不能让用户单击复选框改变其开关状态,这时复选框要关掉而又正常显示。为了让复选框稳定灰而又只能读取,要放上一个面板,并将面板的Enabled属性变为false
Label构件Label构件显示窗体上的文本。有时标题文本在设计时确定,从此不再改变,而有时则会在运行时动态改变。操作标题的Caption属性可以在运行时改变标题文本。Label构件没有专门的要领和事件。表8.8列出了Label构件特有的属性。表8.8Label构件特有的属性属性说明AutoSize配置为true时,标题按照Caption属性中包括的文本调解尺寸。配置为false时,文本在标题右边剪取FocusControl标题为非窗口化构件,所以无法跳表和接管输入核心。但有时标题是编辑控件等控件中的文本,这时可以给标题指定和速符(用和号&),然后将FocusControl属性变为按标题加快键时要接管输入核心的控件名ShowAccelChar配置为true时,显示标题中的实际和号,而不是把和号作为加快键Transparent这个属性配置为true时,Color属性忽略,显示标题底下的一切,譬喻可用于将标题放在位图配景中WordWrap这个属性配置为true时,标题中的文本达到标题边缘时会换到新行中
#p#分页标题#e#
ScrollBar构件ScrollBar构件暗示独立转动条,即不与编辑控件、列表框、窗体等相接洽。我很罕用到独立转动条,有些应用措施大概大量利用独立转动条,但日常应用措施顶用得不多。ScrollBar构件的机能通过Min、Max、Large Change和SmallChange属性配置,转动条位置可以通过Position属性取得。Kind属性可以指定垂直或程度转动条。
公用对话框在构件板的Dialogs标签中,这些构件不是可视构件,因为没有图形设计接口。下面几节先容这些公用对话框,但Print和Printer Setup对话框要留到后头先容打印时再先容。
8.8.1Execute要领公用对话框的一个配合之处是都有Execute要领,用于生成和显示对话框。Find和Replace对话框是无模态对话框,其余都是模态对话框。用户单击OK按钮、双击文件名(对付文件对话框)或按键盘上的Enter键时,Execute要领返回true。用户单击Cancel按钮、按Esc键或用系统封锁框封锁对话框时,Execute要领返回false。公用对话框凡是实现如下:if(OpenDialog>Execute()) { // user pressed OK so use the filenameMemo>Lines>LoadFromFile(OpenDialog>FileName);}return;这个代码显示File Open对话框并向用户请求文件名。假如用户单击OK按钮,则执行if块内的代码,文件装入Memo构件。假如不按OK按钮,则忽略if块内的代码,不产生行动。说明 上例中的代码是C++快捷语法的又一个例子。第一行:if(OpenDialog>Execute()) {便是if(OpenDialog>Execute() == true) {两种要领都可以,但第一种更好。
File Open和File Save对话框File Open和File Save对话框有几个配合属性。File Open对话框让用户打开应用措施中的文件,包装成OpenDialog构件。File Save对话框用于从用户哪里取得文件名以生存文件,也用作Save As对话框。File Save对话框包装成SaveDialog构件。
DefaultExt属性DefaultExt属性配置对话框利用的缺省扩展名。缺省扩展名是用户不提供扩展名时自动添加到文件名后头的扩展名。FileName属性FileName属性是最明明的文件对话框属性,用于放用户所选文件的文本。假如文件对话框初始显示时要让文件名呈此刻文件对话框的编辑部门,则要在挪用文件对话框时先配置这个属性。用户单击OK封锁文件对话框后,这个属性中包括所选文件的完整路径和文件名。Files属性Files属性是只读属性,是启用多文件选择时包括所选文件清单的TStrings实例。Filter属性Filter属性包括一列用户可以选择的文件范例清单。文件范例放在文件对话框的File of type:组合框中。可以配置Filter属性以反应应用措施所针对的文件范例。譬喻,简朴文字编辑措施的过滤器可以配置成显示文件范例.TXT、.INI和.LOG等。过滤器可以在设计时通过Filter Editor对话框配置。为了打开FilterEditor对话框,双击工具调查器FIlter属性旁边的Value列。Filter Name列中包括文件范例的文本说明,Filter列中是用于显示该范例文件的实际文件掩膜。尽量可以直接在工具调查器Value列中输入过滤器字串,但利用Filter Editor对话框更利便。假如只用一个过滤器,则可以直接在value列中输入Filter属性,说明和过滤器之间管道分隔。譬喻,为了用一个过滤器搪塞所有文件范例,可以输入如下过滤器:All Files (*.*)| *.*FilterIndex属性FilterIndex属性配置对话框初始显示时利用的过滤器,但索引不是以0为基数,而是从1开始。InitialDir属性InitialDir属性指定文件对话框显示时作为初始目次的目次。假如没有指定InitialDir属性值,则回收Windows确定的当前目次。提示 一流的Windows措施能跟踪打开文件和生存文件时利用的目次。这个信息凡是放在注册表中。显示File Open或File Save对话框之前,将InitialDir属性配置为用户上次利用的目次。用户选择文件之后,可以更新注册表以反应新的目次。
#p#分页标题#e#
Options属性Options属性节制利用文件对话框的要领。选项许多,最常见的有是否答允生成新文件或目次、对话框中是否显示Help按钮、是否答允长文件名、是否答允选择多个文件,等等。详见C++ Builder中关于OpenDialog和SaveDialog构件的联机辅佐。Title属性Title属性配置或读取文件对话框的标题。不指定标题时,OpenDialog缺省用Open,SaveDialog构件缺省用Save。提示 Save As对话框就是Title属性配置为Save As的SaveDialog构件。文件对话框没有相关联的事件。提示 也可以不放OpenDialog构件到窗体上而在运行时实现File Open对话框或其它公用对话框。为此,生成TOpenDialog类的实例,然后挪用Exeate要领:TOpenDialog* openDlg = new TOpenDialog(this);if (openDlg>Execute()) {// do something here}delete openDlg;假如需要,还可以在挪用Execute之前配置OpenDialog构件的属性。
File Open Picture和File Save Picture对话框这两个对话框是在File Open和File Save对话框中增加了一个特性,用预览窗口显示当前所选的图形。这些对话框也有Filter属性,预设成常用Windows图形名目,另外,它们与File Open和File Save对话框完全一样。 Color对话框Color对话框可以用于选择颜色。单击OK按钮时,Color属性会包括颜色信息。Color对话框和文件对话框一样,没有要响应的事件。
Font对话框Font对话框让用户从系统提供的字体清单中选择字体。通过Device属性可以选择要屏幕字体、打印字体照旧两者都显示。通过修改MaxFontSize和MinFontSize属性可以限定用户可选的最大和最小字体尺寸。和文件对话框一样,Options属性包括各类节制Font对话框成果的选项。假如用户单击OK,则Font属性包括实现新字体所要的全部信息。Font对话框有个OnApply事件,在用户单击Font对话框的Apply按钮时触发。必需生成OnApply事件在有效事件处理惩罚器之后,Font对话框中才会显示Apply按钮。
Find和Replace对话框Find和Replace对话框让用户输入搜索文本和替换文本,并提供了各类搜索和替换选项。Find对话框包装在FindDialog构件中,Replace对话框包装在ReplaceDialog构件中。Replace对话框具有Find对话框的一切,并增加了替换成果。FindDialog和ReplaceDialog构件的主要属性有FindText(要找的文本)、ReplaceText(要替换成的文本)和Options。显然,FindDialog构件不会有ReplaceText属性。Options属性包括单击Find Next、Teplace或Replace All按钮时用户配置的各类选项信息。FindDialog和ReplaceDialog构件的Execute()要领与其它Dialog构件稍有差异。首先,Find和Replace对话框是无模态对话框,只要对话框显示,Execute()要领就返回。由于这些对话框是无模态对话框,所以Execute()要领的返回值没有意义(老是true)。这些对话框用OnFind、OnReplace事件和Options属性确定对话框中产生的环境。OnFind事件在单击Find Next时产生,ReplaceDialog构件有OnFind事件,但也有OnReplace事件,在单击Replace或Replace All按钮时产生。操作这些事件可以确定用户何时请求了寻找或替换行动。措施应读取Options属性以确定用户但愿如何举办寻找或替换行动。