Delphi的可视化部件用法简介

发现这篇文章很有用,可以起到鸟瞰的作用,所以转了。。。转自:http://apps.hi.baidu.com/share/detail/45233053

本节中,我们将较为深入地讲解Delphi的部件。这是编制大型复杂应用程序的必由之路。下面,我们将对各种部件分类进行简单的介绍,以便于您在编程时能够较快地了解有哪些部件可能会满足您的要求,并对其重要的方法、属性等有一个大致的了解。

  基本技巧、工具的介绍在本章的第4节中,交互阅读这两部分,多创制几个试验程序,有助于您迅速进入Delphi世界,尽早将这一精妙软件用于实际工作中。

1.3.1 常用的文本相关部件

    以下的部件以各种格式显示文本,其中有些是文本和数据输入的途径。它们是Label(标签)、Edit(文本编辑)、MaskEdit(格式编辑)、Memo(备注)、List Box(列表框)、Combo Box(组合框)。除了MaskEdit在Additional页之外,其它的都在Standard页中。

1.3.1.1 Label部件

    Label(标签)一般放在对象的旁边,用来标记这些对象,从而对用户的操作进行提示,也可以用来显示其它信息。您可以在标签中设置热键,也即在Caption属性值段中输入含有"&"的字串,当用户使用"Alt+关键字母"时,将自动选中它所指向的对象。方法是设置Label部件的FocusControl属性,在值段中,选用与它关联对象的对象名。

1.3.1.2 Edit、MaskEdit和Memo部件   

    Edit、MaskEdit、Memo部件都是用作接收、显示用户输入文本的。它们具有一些相同的属性。ReadOnly在运行时间内控制对象是否可以进行Windows的操作,当此值为False时,该框内的文本就不能被复制到剪贴板上。MaxLength可以设置输入文本的长度限制。用PasswordChar属性可以按照显示隐蔽密码的方法显示用户输入文本,例如,它的缺省值为"*",运行时,您的输入将用"*"来显示,从而提供了一种安全措施。您可能也发现了,当一个字段被加上高亮度显示时,按键操作会将这一字段删除,替换成当前的键盘输入。这种设置为操作提供了方便,您不必每次先删除原来的文本;但也可能会导致误删文本。将AutoSelect属性设置成False,这种替代功能就被取消了。

    MaskEdit是格式文本输入对象。它的EditMask属性为它提供了过滤文本的格式。点动这一属性的省略按钮,会弹出过滤编辑对话框,除了Delphi为您提供的几种屏蔽格式,您也可以自己编写,查阅"帮助",会为您提供更详细的用法介绍。

    Memo是备注框,与以上对象不同的是,它可以接收多行文本输入。将ScrollBars设置成ssVertical,可以为它加上一个垂直的滚行条。Align属性调整该对象在窗口中的对齐情况,有alNone(无对齐指定)、alBottom(底部对齐)、alClient(全窗口显示)等可以选择;而Alignment属性则决定了文本在框中的对齐显示格式。Lines属性访问的文本被存储在一个TStrings对象中,按动它的省略按钮,可以通过对话框向它增加文本,也可以用程序对这一属性进行操作,以达到修改或增加备注文本的目的。

1.3.1.3 List Box和Combo Box部件

    List Box(列表框)和Combo Box(组合框)都显示列表项目,所不同的是组合框占用较少的空间。常见的Windows操作系统中,显示可用磁盘驱动器时,用的就是组合框。列表框则提供了一个项目列表以供选择,如Windows打开文件操作时显示文件列表的就是List Box。

  下列程序段将Edit1的文本加入到ListBox1中,并清空Edit1中的文本:

     procedure TForm1.AddButtonClick(Sender:TObject);
     begin
        ListBox1.Items.Add(Edit1.text);
        Edit1.Text := '';
     end;

    常见的组合框初始化用以下的语句可以实现,它用下拉式列表框的第一项来初始化组合框的缺省值:

      procedure TForm1.ComboBox1Text(Sender:TObject);
      begin
      if ComboBox1.Text = ''then
        ComboBox1.Text := ComboBox1.Items.String[1] ;
   end;

    以上就是文本输入的基本部件。

1.3.2 按钮和检查框部件

1.3.2.1 Button和BitBtn部件

    按钮是Windows常用的部件,前文的例程中我们已经基本掌握了Button和BitBtn的主要用法。它们一般用在对话框中,做为执行某种功能的指示。您也可以为它们设置内置返回功能,将ModelResult属性加以匹配,可以不用编程,直接实现系统内置的功能,这一点上和Kind属性颇类似。

1.3.2.2 Speed Button部件

    Speed Button(加速按钮)部件在Additional页上,是进行工具条快速设计的理想部件。它只有一个位图,没有标题。需要提起读者注意的是,用多个Speed Button制作一个工具条时,必须先放置一个窗口类部件,如Panel(操作板)、Group Box(群组框)等。否则试图将加速按钮先制作好再移上去,您会发现它会总是处于窗口类部件下面不可见。当然,您可以对加速按钮进行复制、粘贴到窗口类部件上处理,那就另当别论了。

1.3.2.3 Check Box与Radio Button部件

    Check Box(检查框)和Radio Button(无线按钮)部件通常是相提并论的,多用作接收用户"是"或"否"的输入判别。它们一般都是成组的放置在Radio Group或Group Box部件中。所不同的是,成组的Radio Button是"互锁"的,用户选择定一个后,其它的将自动设置为不选;而Check Box部件则是分立的,您可以同时选中其中的几个,也可以一个都不选。

1.3.3 分组、分界部件

    分组部件把其它的部件组合成一组,例如上述的无线按钮部件Radio Button,就需要放入以下的成组部件中。分界部件用于在窗口中产生边界和区域,以区别于其它区域。

1.3.3.1 Group Box、Radio Group及Panel部件

    Group Box(群组框)、Radio Group(选项按钮组)部件都可以将部件分类、成组。它们都有标题,可以用文字表征成组部件的标题或信息。Radio Group可以进行Column和Item属性的设定,以决定其上的无线按钮的提示文本及显示格式。Panel部件也可以达到将部件分组的目的。通过编程向窗口加一个操作板部件,以书写提示和帮助信息,也不失为一种好方法。以上三个部件都在Standard页。

1.3.3.2 NoteBook、TabSet及TabbedNoteBook部件

    记事本部件NoteBook一般和标签集部件TabSet共同使用,用来创制含有标签的重叠多窗体窗口。Pages属性包含了一个页名列表,在编程时,将TabSet的Tabs属性设置成NoteBook的Pages属性,就可以使页标签和相应的窗体对应起来。

    另外一个部件TabbedNoteBook是带有标签的多窗体窗口,不过,它的页标签设在窗口的上面。它们相当于多个分组部件的集合,每次查看其中的一页。以上三个部件在Win 3.1页。

    在Win95页上还有TabControl、PageControl等部件。它们对于生成Windows 95风格的标签集是很重要的。

1.3.3.3 分界部件

    在Win 3.1页上,还有Header(表头)部件,它在窗口中产生一个凸起的题条,提供了一个可视化的文本显示区域。Additional页的Bevel(立体框)部件提供了一个方框,它的单一线条或整个边框都可以通过Style属性设置为外凸或内凹,可以美化窗口。在Win95页上,HeaderControl、StatusBar等部件,为您使用Winows95风格的界面提供了重要元素。

1.3.4 图形、图象部件

1.3.4.1 Image部件

    图象部件Image在Additional页上,用来在窗口中显示一幅图片,可以在picture属性中调入图象文件。Delphi支持位图(.BMP)、图标(.ICO)、图元(.WFM)三种文件格式。比较重要的属性是Autosize和Strech。它们决定了图象在窗口中的显示尺寸。Autosize属性为True表示按原尺寸显示,Strech属性为True表示图象按对象图框的大小显示,这时图象的大小可以人为改变。

1.3.4.2 Shape部件

    图形部件Shape在前文中我们已有了解,它可以处理多种几何形状,通过设置Pen和Brush的嵌套属性,可以设置图形边框颜色、线型及图形的风格、填充方式、贴图方式等。

1.3.4.3 PaintBox部件

    在System页上还有一个PaintBox(绘图框)部件,它在窗体上为您提供一块可供绘图的区域。这一部件需要编程实现它的功能,一个只有在运行时才有效的重要属性Canvas是完成绘图的关键。PaintBox部件不能单独存在于窗体中,必须把它放在固定的分组部件中。

1.3.5 关系图、文件列表部件

1.3.5.1 OutLine部件

    OutLine(略图)部件在Win 3.1页上,它适用于显示分层的数据、文本。在Delphi中,略图部件具有很宽的设置范围。它的Lines属性可以设置每一词条的文本或数据。一般一个空格相当于一个层次,如果在项目前加一个空格则表示它处于树的下一层。所以在进行Lines属性编辑的时候不能用Tab键。在编程时用Lines和Items属性来访问略图的名称、索引及完整的路径名。OutLineStyle属性用来配置显示时关系图的风格,您可以选定用旁边有图标的缩进方式,也可以选择连线方式。

1.3.5.2 目录访问部件

    Delphi为您提供了强大的文件目录访问部件。您可以针对具体的用途设计自定义的文件对话框。在部件选项板上选中System页,您将发现这些部件,它们是文件列表框FileListBox、目录列表框DirectoryListBox、驱动器下拉式列表框DriveComboBox和过滤式下拉列表框FilterComboBox部件。

    文件列表框部件FileListBox显示当前目录中的文件,缺省的设置是显示所有文件。通过改变Mask属性来设置过滤器,可以适用DOS的标准通配方式,选择要显示的文件名。当指定多个过滤器时,之间用";"隔开。

    目录列表框部件DirectoryListBox显示当前驱动器内的目录,并且允许用户在程序执行时切换目录。Column属性决定目录在窗口中用多少列进行显示,当窗体空间不够时,用几列进行显示将有助于全面地显示目录信息。在Delphi中,当窗口空间显示不下全部信息时,将自动加上滚行条,以方便用户的操作。

    驱动器下拉式列表框部件DriveComboBox显示当前所在的驱动器,并且在执行时允许用户在驱动器之间切换。作为程序员在应用这一部件时,应考虑当用户选择到不存在的驱动器时,进行容错、提示处理。

    FilterComboBox(过滤式下拉文件列表框)部件显示当前文件过滤器类型,例如*.*,*.pas等。在执行时允许用户在下拉列表中选择要显示的文件类型。对Filter属性进行初始化,就会得到下拉式列表。

    除了以上的四个部件外,在Sample页上,Delphi还提供了一个目录略图部件DirectoryOutline。它将当前磁盘中的目录结构显示成一个多层次的略图,也允许用户在运行时进行目录的层次显示切换。

1.3.6 滚动部件

1.3.6.1 ScrollBar部件

     ScrollBar(滚行条)是在Windows应用程序中常见的结构,在Delphi中多数部件有自己的是否加入滚行条的属性ScrollBar,但一个独立的滚行条部件仍是很有意义的。它在部件选项板的Standard页,提供一种可以改变菜单或是画面中可见部分的工具,可以以一定的增量在一定范围内滚动。Position属性是个整形值,如果需要以动态的方式显示滚行条,可以在程序中通过操作这一属性来实现。

1.3.6.2 ScrollBox部件

    ScrollBox(滚动框)部件是加上了水平、垂直滚行条的群组框部件,它在Additional页上,用作在窗体中提供一个可以多方向滚行的工具。如果您只想显示较大幅面的一个部分,并允许您的用户对其进行滚行操作,ScrollBar将是理想的选择。您可以先在全幅面的滚动框中进行全面设计,然后适当地缩小外框,两个方向的滚行条将自动显示。它的Position属性是集成在HorzScrollBar和VertScrollBar两个集属性下的,编程时,可以选定这两个属性进行操作。

1.3.6.3 几个进度显示部件

    在System、Sample、Win 95、OCX等页上,Delphi还为用户提供了几个部件,完成显示进度,增量等操作。部件Gauge可以显示成长条状的或饼状的进度指示仪表。例如在安装软件时,可以编程让这一部件显示目前安装的百分比。

  微调按钮部件SpinButton含有指示向上、向下的两个按钮,它可以用来调节数值,使被控制的值按一定的增量单位,由用户操作递增或递减。

  微调编辑框SpinEdit是微调按钮和编辑框的结合,它在编辑区域显示了数值,又在右侧设了微调按钮,使得用户选择调节按钮或改变数值的方式,来调整数据的值,并返回Value属性。

    其它的此类部件,因篇幅限制,此处不做赘述。具体部件的信息,按照名称在在线帮助中查询其方法、域及应用实例,可以得到详细应用资料。   

1.3.7 网格、表格部件

    在Additional页中,还有字符串表格部件StringGrid,绘图表格部件DrawGrid等。它们可以用来模拟按网格排列的事物,如成排的按键、操纵钮、字符串等。属性RowCount和ColCount设置了在网格中显示的行列的数目,设置FixedCols和FixedRows的值,可以固定一些行列避免运行时被用户改变。Options集属性含有字符串表格部件的显示方式、操作方式等,可以查阅帮助获得详细的信息,此处不再一一表述。

    图形表格部件DrawGrid使得用户可以用表格的方式显示非文本的数据,它的应用面比字符串表格部件更为广泛,可以把图片和文本一起放在网格中。

    颜色网格部件ColorGrid在Sample页上,它提供控制前景色和背景色的界面,通过属性ForeGroundColor和BackGroundColor可以访问到,也可以通过程序,把得到的颜色赋值给其它对象的颜色属性。

    Sample页的日历部件Calendar也是用表格的方式表现的,它提供了一个简单的以月份为库单元的日历表格,通过设定Year和Month的值,可以得到相对应的月份的日历。

1.3.8 多媒体(MultiMedia)和OLE部件

    媒体播放器部件MediaPlayer和OLE部件可以在System页上找到。媒体播放器部件在处理多媒体文件时很有用。它显示一个VCR风格的控制面板,让您记录或播放多媒体的图像、声音文件。您可以通过属性的设定来控制部件上的各个按钮,如改变显示颜色、增减按钮数目等。改变一下ColoredButtons、EnabledButtons、VisableButtons的各个子属性值,您就不难发现它们控制的显示效果。具体的应用已经超过本简介的目的,请参阅帮助以及后文的详细介绍。

    OLE客户端部件OLEContainer在窗体中创建一个OLE用户区域,用于与Delphi外部的某个对象进行接口。若对外部的Paradox表格、Word文件、扩展页等进行操作,则对象本身的应用程序必须支持OLE操作。Delphi提供了支持OLE应用的对象清单,单击ObjClass属性的省略按钮,就会显示出来。具体的应用,请查阅帮助或阅读后文的详细阐述。

    以上,我们介绍了Delphi的基本可视部件。读者可能会发现,在Stardrad页最前面的两个部件MainMenu和PopupMenu还没有提及。因为这是建立菜单的重要、基本操作,我们将在下一节中做详细的介绍。另外,在下文中,我们还将介绍比较重要的不可视部件。至于数据库部件、动态数据交换DDE部件等,因为在本书的后面章节中有详尽的用法介绍,此处不赘述。

                             1.4 使用非可视部件

    上一节介绍的各种部件,在设计和运行时的形式是一样的。本节所介绍的部件,在运行时被隐蔽地嵌入到窗口中,它们本身并不做任何事情,必须被用户的程序所支持才能发生作用。因为部件的设计形状和运行状态并不相关,所以,这种部件在设计窗体中的位置无关紧要,可以放在窗体上不影响其它可视部件的任何位置。这种部件,称之为非可视化部件。

    首先,介绍在Standard页上的重要部件主菜单MainMenu和弹出式菜单PopupMenu的详细用法。

1.4.1 使用菜单部件

    菜单部件含有内置的交互设计器。在设计菜单时,可以用菜单设计器Menu Designer进行工作。

    应用程序的菜单有两种形式:MainMenu是一般的Windows用户界面必须的部件,它显示在固定的位置,一般用键盘和鼠标左键来激活菜单的功能项;PopupMenu是弹出式菜单,例如,我们前文的小例程在对齐部件时用到的Delphi菜单,就是弹出式的。一般以鼠标的右键或其它快捷键来激活菜单;菜单的位置是在屏幕上"浮动"的,根据鼠标的当前位置决定。

    以下,我们将MainMenu和PopupMenu统称为菜单。

1.4.1.1 进入菜单设计器Menu Designer

    创建菜单时,首先要在窗体中放置一个菜单对象。然后调入Menu Designer进行菜单的详细设定。用两种方式可以进入Menu Designer:选中菜单部件,点动属性中Items省略按钮;或在菜单部件上双击左键,就会出现Menu Designer。


1.4.1.2 创建菜单的各个项目

    进入Menu Designer,会发现在菜单的第一项位置上有加亮显示。输入顶层菜单项(实际上是在设定顶层菜单项的Caption属性)并回车。一项菜单条设置完后,加亮显示的位置被移至下拉菜单的下一项,同时,主菜单顶层上会出现虚线框,指示出下一个顶层菜单项的位置。要包含一个隔离条,可以键入短划横"-"即减号并回车。逐步输入菜单的各项,用鼠标左键切换到下一个顶层菜单,直到菜单完成。

1.4.1.3 设定加速键和热键

    您可以设定加速键,与前文的例程相同,只需在输入时,将"&"放到需要指定为加速键的字母前面,该字母将被用下划线显示,运行时,按"Alt+加速键字母"可以激活该菜单条。设定热键也是很方便的,只需在Object Inspector中该菜单条的ShortCut属性值段的下拉菜单中,为它选定一个热键组合即可。在运行时,通过"Ctrl+热键字母"来激活菜单条。加速键和热键并不矛盾,您可以同时指定它们。

1.4.1.4 使用Menu Designer的弹出式菜单

    Menu Designer中还有一个弹出式菜单,它提供了高频菜单创建命令,并可以对模板选项进行快速访问。在菜单设计器窗口中单击右键,或将光标停在菜单设计器上,按Alt-F10,可以调出Menu Designer的弹出式菜单。使用Menu Designer的弹出式菜单可以向菜单增加菜单项、删除菜单项等操作,还可以对标准主菜单模板进行增加、删除、插入等操作。

    为菜单编制功能,可以双击菜单条,或在特定菜单条的Events页上,双击它响应的事件的值段,Delphi将回到代码编辑器,光标停在事件对应的事件处理过程中,您可以为菜单编制实现任务的代码。

    如果您已经为Speed Bar上的加速按钮编制了事件处理过程,而需要把相应的菜单项连接到事件处理过程上,则只需在该菜单项的Events页的OnClick事件后,输入事件处理过程的名称即可。这样单击菜单项便和按动加速按钮便实现同样的功能。

1.4.1.5 创建嵌套菜单

    创建嵌套菜单也是重要的手段。Delphi的嵌套菜单风格是嵌套菜单列在它上层菜单的边上,如图1.11所示:

    创建嵌套菜单,把加亮条移到它的上层菜单条上,按Ctrl+右行键,将弹出子菜单,就可以按照同上所述的方法进行创建工作了。

    通过拖--放操作,可以实现菜单条的重新定位。用鼠标左键按住某一菜单条,移动到菜单的某一位置,释放左键,菜单条即得到重新定位。菜单设计器允许菜单条在顶层下移动位置,支持菜单条在嵌套菜单中移进、移出,甚至可以将菜单条在各个顶层菜单下属的菜单间移动与定位。


1.4.1.6 给菜单加提示(Hint)

    在菜单中加提示是很好的习惯。它使得您的用户在运行菜单功能前,可以对菜单的任务有一个简略的了解。在菜单条任一项的值段按F1,可以查阅在线帮助,在帮助的正文中找到OnHint并查阅它的例程,将DisplayHint等方法的例程Copy到您的程序中。然后,在菜单条的Hint属性中加入提示正文,运行时当用户将鼠标移到菜单项时,在窗体的底部状态行中会出现Hint属性中的提示信息。

1.4.1.7 菜单的其它属性简介

    菜单还有其它的一些属性。Enabled属性决定菜单是否被禁用,这在编程中可以实现一定情况下不允许用户使用某项菜单。Checked属性表征了菜单项的开关情况,当Checked为True时,菜单条的前面会出现选中标志。Visible属性控制菜单隐藏与否。设置这一属性可以实现多版本的菜单。被隐藏的菜单项以及它的子菜单都是不可见的,或是不可访问的。

    Popup Menu在用Menu Designer时是完全相同的。只不过它在运行时和主菜单的激活形式有所不同:它是用鼠标的右键激活的。弹出式菜单在一定的窗口范围内激活,所以必须将窗口和弹出式菜单联系起来。在设计完PopupMenu后,须在Name属性中为它命名,然后把这个名称赋给窗体的PopupMenu属性。这样,窗口会接收右键输入,并激活弹出式对话框。

1.4.2 使用计时器部件Timer

    在System页上,还有一个(Timer计时器)部件,它能够有规律地触发OnTimer事件,发送信息给应用程序。它是编制应用程序时最为重要的部件之一。

1.4.2.1 Timer的重要属性

    Enabled属性表示了计时器打开还是关闭;用Interval属性设置两个OnTimer事件间的间隔,单位是毫秒,也即千分之一秒。将间隔置为0相当于关闭计时器,Interval的最大允许值是32767,也即32.767秒。

1.4.2.2 使用Timer对程序进行控制

    计时器是独立的对象,在启动与Windows无关的逻辑和应用事件时极其有用。如:用计时器可以模拟时钟或计时器,可视地显示经过的时间;可以用作系统延时,Delphi提示信息出现只需在该区域停顿几秒,就是Timer应用的一个例子;可以检查系统环境、事件,根据结果进行响应;也可以在窗口中闪烁一段正文或图像,提示某种操作或处理正在进行等等。

    在窗体中放置一个计时器Timer部件,将它的Interval属性置为100(每隔10毫秒触发一次),双击部件进入代码编辑器,在它的事件中加入这样一句程序:

     MessageBeep(0);

    运行它,会有规律地发出"叮"声。它给您一个应用Timer部件的直观印象。

    尽管Delphi的计时器每秒可以产生1000次激发,在编程中还必须注意程序对计时器激发的响应。如果程序处理OnTimer事件的时间超过Interval的设定值,就可能错过事件,因为当下一次激发到来时,系统正忙于处理上一事件,则这次激发就会被忽略。同时要注意其它的Windows应用程序是否会影响计时器的触发。如果后台正运行着一个占用处理器的程序,就可能会导致Timer的触发不准确,从而使前台程序运行出现错误。

1.4.3 使用公用对话框部件

    Delphi为您在Dialogs页上提供了几个标准对话框,它们是文件打开OpenDialog;文件保存SaveDialog;字体Fontdialog;颜色ColorDialog;打印PrintDialog;打印设置PrintsetupDialog;查找FindDialog;替换ReplaceDialog等部件。

1.4.3.1 调用标准对话框

     您可以发现,除了Font,Find,Replace对话框之外,其余标准对话框的Events页都是空白的。因为它们本身是不可视的对话框形式,所以不能响应标准的鼠标键盘操作,只能在程序中调用它们。在本章第一节的Demo程序中,我们已经对用Color对话框有了了解,在程序的适当位置加入对话框所属的Execute方法,可以执行标准对话框。

    在编制应用程序时,您可以先设计好主菜单。在需要使用标准对话框的菜单项的事件处理过程中,调用标准对话框的Execute等方法,以满足设计需求,即响应菜单命令弹出标准对话框。

1.4.3.2 OpenDialog和SaveDialog部件

    OpenDialog(文件的打开)和SaveDialog(保存对话框)部件处理文件的打开与存储,它们拥有完全相同的属性域。DefaultExt属性表示缺省扩展名。当用户没有输入文件的后缀时,可以为用户文件自动加扩展名。FileName属性指定出现在FileName正文框中的缺省文件名。Filter属性提供了文件过滤器。FileEditStyle决定在输入文件名时用Edit还是Combo- Box;设置为fsComboBox时,允许使用历史列表HistoryList属性,这在应用程序需要经常选择文件时,可以节约大量的时间。HistoryList属性保存有在File Name下拉式编辑框中显示的文件名,使用[TStrings]的省略按钮可以编辑历史列表。您也可以编程实现将HistoryList属性设为以前用OpenDialog打开的文件名历史列表。下列程序段可以实现自动历史文件名加载:

      if OpenDialog1.Execute then
        OpenDialog1.HistoryList.Insert(0,OpenDialog1.FileName);

1.4.3.3 ColorDialog和FontDialog

    颜色对话框ColorDialog我们在前文的例程中已经用过,其更详细的功能如Options的设定请查阅在线帮助。

    字体对话框Font可以帮助用户获取各种方式的字体。使用OnApply事件,可以使得Font对话框中包含一个Apply按钮,按动它,对话框中设定的字体会立即应用到指定的对象中,而对话框仍然是打开的,这样更便于观察修改的结果。

    以下的例程在窗体中先放置一个按钮Button1,调用字体对话框来改变按钮上的Caption属性显示的字体:

      Procedure TForm1.Button1Click(Sender:TObject);
      begin
        FontDialog1.Execute;
      end;
      Procedure TForm1.FontDlgApply(Sender:Tobject);
      begin
        Button1.Font:= FontDialog1.Font;
      end;

1.4.3.4 PrintDialog和PrintSetupDiaog

    打印对话框PrintDialog和打印设置对话框PrintSetupDialog可以显示标准打印、打印设置对话框,支持打印文件和打印设置功能,设置它的Options属性可以规定对话框的表现形式。

1.4.3.5 FindDialog和ReplaceDialog

    FindDialog和ReplaceDialog提供了查找、替换两个对话框部件,对于寻找和替换文本是极其有用的。在FindDialog和ReplaceDialog中都有OnFind事件,当用户单击寻找对话框中的Find Next按钮时将触发这一事件。FindText属性中保存了用户在Find What编辑框中输入的文本。在ReplaceDialog中还有OnReplace事件,当用户单击替换对话框中的Replace和Replace All按钮时,将触发OnReplace事件。FindText和ReplaceText属性分别保存了用户在Find What和Replace With编辑框中输入的文本。

                     1.5 使用Delphi的工程管理、设计工具

    Delphi 2.0是完备的工程设计系统,除提供了大量的可视化编程部件和简单方便的设计方法外,还备有功能强大的工程管理、窗口设计工具。

1.5.1 创建多窗体工程项目

    绝大多数的应用程序都用到不只一个窗口,Delphi允许用户创建多文档界面(MDI)应用程序。应用自动创建窗体、窗体样板、对话框专家、应用专家等,可以使得创建应用程序更为方便快捷,而且可重复利用,大大地降低了工作量。

1.5.1.1 创建一个含有About框的例程

    作为例子,我们先创建一个含主窗体和简单的About框的应用程序:

    在Delphi中创建一个新工程,并为空窗口增加一个Button部件。我们把它作为主窗体,目的是当按动按钮部件时,调出About窗口。下面我们直接进行About窗口的创制。

    选用主菜单的File|New项,在New页中,选用Form样板,Delphi会自动创建一个空窗体Form2。您可以在其上进行About框的设计,例如加入标签以显示各种信息、加入图片帮助说明等。将Form2的BorderStyle属性设置为bsDialog,则窗口成为运行时不能改变大小的对话框。

    下面编程实现主窗体对About框的显示控制。很可能在设计时,两个窗体出现重叠,Form1被About遮住。用Shift+F12产生View Form对话框,可以选择窗口的名字,调出所需的窗体Form1,双击其上的按钮部件,在事件处理过程加入以下的程序:

      procedure TForm1.Button1Click(Sender: TObject);
      begin
        Form2.Show;
      end;

    由于Form1窗体调用About窗体,所以必须在Form1的库单元程序中对引用About进行说明。在Unit1的Uses后面加入About的库单元名Unit2。运行程序,在主窗体上按动按钮,可以出现About框。在框外单击鼠标,会回到主窗体中。

    在About窗体中加入一个按钮,并将按钮的ModalResult属性设置为mrOK,同时将按钮的标签的Caption改为OK。这样一个有模式的About框已经建成了。将窗体Form1中Button1的OnClick处理过程的代码改变如下:

      Form2.ShowModal;

    再运行程序,除了与上述功能相同显示About对话框外,该程序只有当用户按动About框的按钮或被About窗控制图标关闭窗口后,才会回到主窗体中,而不能与第一个窗体发生交互行为。这就是方法Show和ShowModal的主要不同之处。

1.5.1.2 指定自动创建窗体

    上面我们简单地生成了一个含About框的双窗体应用程序,运行时,应用程序启动时将自动创建第二个窗体。窗体保持隐蔽状态,但仍然占用Windows的资源。在大型应用程序中,有时不希望在应用程序加载时自动创建所有窗体。Delphi可以指定哪些窗体被自动创建。

     选用Project|Options,Delphi显示Project options对话框。如果Forms不是当前页,按动下标签使之可见。

    图示为Delphi装载的TextEdit例程(...\Delphi 2.0\Demos\doc\TextEdit.dpr)。在MainForm正文框中输入主窗体的名字。当应用程序启动时,主窗体自动打开并获取输入焦点。对于MDI应用,主窗体的FormStyle属性必须设置为fsMDIForm。在Auto-created Forms列表框中列出了在启动时自动创建的窗体,缺省时工程文件的所有窗体都在此列中。

    如果不需要自动创建窗体,使用箭头按钮把窗体移动到Available Forms列表框中。自动创建的窗体可以用Show方法进行显示,而不自动创建时,必须编程实现窗体的显示。在TextEdit工程中,定义一个TEditForm类型的变量EditForm,使用了以下的代码显示第二个窗体:

      Begin
        EditForm := TeditForm.Create(Self);
        EditForm.Open(OpenFileDialog.Filename);
        EditForm.Visible := True;
      End;

    也即,必须使用Create方法创建窗体,同时将窗体的Visible属性设为真。

1.5.2 使用工程管理器Project Manager

   当窗体的数目逐步增加时,跟踪窗体以及与之相连的库单元代码就变得比较烦琐。用Delphi提供的工程管理器Project Manager可以使得管理各种窗口更为方便。

1.5.2.1 工程文件的组成

    工程(project)是整个应用程序的源文件集合,这样的文件一共有三种:

    1.一个包含主程序部分的工程文件,用以驱动由Delphi创建的Windows程序,扩展名为.DPR。这是在用户的工程被装载时就运行的全局应用程序文件,它的名字出现在Project Manager的标题条上。工程文件一般是Delphi自动创建的,用View|Project Source可以调出该工程的源文件,如果需要,可以对工程源文件进行编辑。

    2.一个或多个窗体文件,它们含有相应的库单元文件。窗体文件的扩展名是.DFM。这些文件含装在窗体上的控制部件。在Delphi中这样的文件是在用户设计界面的时候由Delphi自动生成的,而且不能编辑。在Delphi中,一个应用程序至少需要一个窗体。

    3. Object Pascal库库单元文件。 它们的扩展名为.PAS。窗体的库单元文件包含了程序部分,用以控制窗体的行为。在一个工程中,还要包含附加库和被应用程序其它部分调用的支持子程序。uses子句中包含的标准库单元文件包含了支持可视窗体及其控制的对象声明。这些库单元也包含了用于激活窗体的事件处理过程程序。

1.5.2.2 使用Project Manager进行工程管理

    选用View|Project Manager,会调出Project Manager窗口。

    Project Manager主体部分列出了库单元以及相关联的窗体的路径,当库单元和工程在同一目录下时,路径不再显示。Project Manager包含了应用程序的所有源文件和窗口。并不是每一个库单元都拥有一个相关联的窗体。Project Manager可以作为工程的一个简捷目录。在列出的任何一个窗体或库单元上双击鼠标左键,Delphi就会产生此对象的代码编辑器。

    Project Manager 窗口上有增加、删除对象以及查看对象的加速按钮。Options加速键能够打开前文所述的Project Options对话框。如果在Project Manager打开时编辑了工程各文件的源代码,可单击Update加速条按钮刷新对象列表。

1.5.3 使用窗体样板和对话框专家

    在前文的例程中,我们创建了一个简单的About框。在很多应用程序中,都会用到这种进行信息提示或表示版本信息的对话框。Delphi的设计思想是软件可重用,所以系统phi已经载入了一些用户可重复应用的窗体样板。使用窗体样板,可以简单地生成各种对话框,节省了大量的重复工作。

1.5.3.1 使用窗体样板创建窗体

    创建一个新工程时,Delphi为用户创建了一个新的空窗体。如果需要使用一个窗体样板,向工程中增加一个窗体。选用File|New,Delphi即会显示New Items对话框。在Forms页上,从样板库中选择中意的新窗体增加到工程中,如图1.14所示。例如,Delphi提供了About Box样板。如果选择它,About对话框就增加到工程中,用户只需加入自己的各种信息即可,这样就简化了工作。同样,要建立一个对话框窗口,在Dialogs页上,选用所需的对话框样板,可以简便地建立起所需的对话框窗口。

1.5.3.2 存储自己的窗体样板

    您可以在样板库中存储自己的窗体样板。首先创制一个窗体的样本,在窗体区域中单击鼠标的右键,可以调出窗体的加速菜单。选用Add To Repository...,将弹出如图1.15所示的对话框。

    在Forms列表框中,选择想要创建为样板的窗体。在Title输入框中输入想要在样本库内图标下出现的文本。在Description区,输入关于样板的详细说明。这样在浏览样本库时,在状态行上会显示这段文字以进行提示。可以选择一个图标作为新窗体样板的图标,按动Browse按钮,选择一个现有图标来代表新的窗体样板。否则将使用按钮左方的缺省窗体图标。按OK按钮,Delphi会要求您确认将窗体存储为样板。

     再次打开New Items对话框,您会发现您的窗体已经被存储成一个窗体样板。

1.5.3.3 使用对话框专家Dialog Expert

    对话框样板呈现了友好界面的被保存对话框,而对话框专家却能根据用户提供的信息,智能地创建复杂的对话框。

    选用File|New...,在New|Items的Dialog页选用Dialogs Expert,Delphi将提示回答各种问题,以便于建立复杂的对话框。图1.16示出了选用对话框专家后的第一个对话框。

1.5.4 使用工程样板和应用专家

    Delphi的工程样板提供预先设计的工程来作为应用程序开发的起点。而应用专家则允许用户按照一定的模式来创建一个应用程序。

1.5.4.1 使用工程样板

    当您通过一个工程样板来开始一个工程时,除了空白工程样板外,都会被要求指定一个唯一的子目录即工程目录Project Directory,用来存储新的工程。如果您指定一个不存在的目录,Delphi会帮助您生成它。您可以通过加入新的窗体和程序库单元来修改它,或不加修改地直接利用,而只是加入您的事件处理过程。无论您如何修改,您所作的修改只影响到打开的工程,原先的工程样板不会受到影响,可再次被利用。

    选用File|New,在New Items对话框中选用Projects页,可以选择将MDI、SDI、Windows 95 Logo等应用程序作为缺省的工程类型,点动所需工程的图标,使之高亮度显示,然后按OK按钮。如图1.17所示。在接下来的Select Dictionary对话框中指定一个用来包含新的工程文件的目录,则一个工程样板的副本在指定的目录中打开。

1.5.4.2 使用应用专家Application Expert

    一个应用专家就是一个应用程序,它会依照您在一系列对话框中所设置的选项值来产生一个工程。

    如果您想在打开一个工程时,利用应用专家来取代工程样板而成为缺省值,则使用File|New,在New Items的Projects页上选用Applcation Expert。这样,双击它的图标,会弹出一系列对话框提问,要求您选择您的工程是否需要一个标准的Windows 95对话框、含有哪些菜单、加速条等。图1.18是使用应用专家后出现的第一个对话框。

    Delphi 2.0会要求您输入您的工程文件名及它存储的唯一目录,并提示您选择应用程序是否使用MDI窗口、是否含有状态行、提示等。选项设置完毕,按动Finish按钮,Application Expert即按照您的要求,建立起一个可以直接运行的工程文件。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值