《delphi程序设计.ppt》由会员分享,可在线阅读,更多相关《delphi程序设计.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章菜单、工具栏和MDI应用程序主要内容n4.1 4.1 菜单菜单n4.2 4.2 工具栏、状态栏工具栏、状态栏n4.3 4.3 消息框与信息函数消息框与信息函数n4.4 4.4 输入框与输入函数输入框与输入函数n4.5 MDI4.5 MDI多文档界面程序设计多文档界面程序设计n4.6 4.6 多文档学生档案管理系统多文档学生档案管理系统4.1 4.1 菜单菜单Delphi 提供了两种菜单组件,位于Standard选项卡上:n主菜单(MainMenu)n弹出式菜单(PopupMenu)一、主菜单设计一、主菜单设计1.1.菜单设计器菜单设计器MainMenuMainMenu组件组件n举例创建一
2、个简单的菜单:举例创建一个简单的菜单:n文件:打开、保存、关闭文件:打开、保存、关闭n编辑编辑n一个窗体可建多个菜单,需指一个窗体可建多个菜单,需指定其定其menumenu属性属性2.菜单项的状态特征n快捷键:设置caption属性,如:打开(&O)n热键:设置shortcut属性n菜单项分组n多级菜单n复选项菜单:设置checked属性n单选菜单项组:设置RadioItem、GroupIndex、AutoCheck属性n菜单无效:Enabled属性n菜单项隐藏:Visible属性n菜单命令:可直接写代码,一般结合ActionList组件使用n综合举例:n建立“学生档案管理”窗体的主菜单。3.
3、3.菜单模板菜单模板n我们在菜单设计中,经常要设计同种样式和作用的菜单项,有些菜单格式都成了约定俗成的标准。所以,可以让Delphi 自动创建某些格式的菜单项。这就是使用菜单模板。n使用菜单模板可以给用户节省大量的时间,而且菜单命令的命名、热键的设置都非常的规范。n当然,在某些场合菜单模板创建的菜单不能满足用户的要求,还需要自己修改。使用菜单模板n使用菜单模板,执行如下操作。n(1)在窗体中插入MainMenu组件。n(2)双击MainMenu组件,进入主菜单设计器窗口。n(3)右击要插入菜单模板的空白主菜单项或空白菜单命令 n(4)选择Insert From Template命令n(5)选择
4、所需的菜单。n(6)单击OK按钮,完成插入菜单模板。创建菜单模板n如果要创建菜单模板,执行如下操作。如果要创建菜单模板,执行如下操作。n(1)(1)在窗体中插入在窗体中插入MainMenuMainMenu组件。组件。n(2)(2)双击双击MainMenuMainMenu组件进入主菜单设计器。组件进入主菜单设计器。n(3)(3)在主菜单设计器中设计所需菜单。在主菜单设计器中设计所需菜单。n(4)(4)右击已经创建好的主菜单。右击已经创建好的主菜单。n(5)(5)选择选择Save As Template Save As Template n(6)(6)输入要保存的模板名称。输入要保存的模板名称。n
5、(7)(7)单击单击OKOK按钮。按钮。删除菜单模板n(1)(1)打开主菜单设计器。打开主菜单设计器。n(2)(2)右击主菜单设计器打开一快捷菜单。右击主菜单设计器打开一快捷菜单。n(3)(3)选择选择Delete TemplatesDelete Templates命令。命令。n(4)(4)选择要删除的菜单模板。选择要删除的菜单模板。n(5)(5)单击单击OKOK按钮。按钮。4.菜单命令项图标n在Delphi中,向菜单命令添加图标的方法:n(1)添加一个图像列表(ImageList)组件 n(2)设置菜单的Images属性、菜单命令项的ImageIndex属性。n注意:添加图标后,使用菜单命令
6、的Checked属性时,将不会开出现“”标记,而是菜单命令图标下凹。n举例:5.行为列表ActionList组件n在组件面板的standard中n可实现多个组件共同执行一个行为二、弹出式菜单n又称快捷菜单,可以更方便操作和某些命令项的选取n快捷菜单组件:PopupMenu快捷菜单的设计n添加PopupMenu组件到窗体中,双击PopupMenu组件打开菜单设计器。n设计的过程与主菜单设计完全相同n设置使用快捷菜单的组件的PopupMenu属性,指定为要打开的快捷菜单名称。4.2工具栏与状态栏n工具栏一般位于窗口的项部,提供快捷的工具栏一般位于窗口的项部,提供快捷的操作方式;操作方式;n状态栏一
7、般位于窗口的底部,用于显示当状态栏一般位于窗口的底部,用于显示当前的状态及一些提示信息。前的状态及一些提示信息。一、工具栏一、工具栏n1.1.工具栏的设计方法:工具栏的设计方法:(1)(1)用面板用面板Panel+Panel+快捷按钮快捷按钮SpeedButtonSpeedButton构成构成工具栏工具栏(2)(2)使用工具栏组件使用工具栏组件ToolBarToolBar设计工具栏设计工具栏(3)(3)使用使用CoolBarCoolBar组件设计工具栏组件设计工具栏(4)(4)使用控件栏组件使用控件栏组件ControlBarControlBar设计工具栏设计工具栏2 2、工具栏组件、工具栏组件
8、ToolBarToolBar n在在win32win32组件面板中。步骤如下:组件面板中。步骤如下:(1)(1)往窗体中添加一个往窗体中添加一个ToolBarToolBar组件;组件;(2)(2)添加快捷按钮并设置按钮的属性:添加快捷按钮并设置按钮的属性:stylestyle、GroupedGrouped、MenuItemMenuItem、HintHint;(4)(4)为按钮提供位图;为按钮提供位图;(5)(5)往工具栏中添加其他组件;往工具栏中添加其他组件;(6)(6)链接按钮的链接按钮的OnClickOnClick事件或编写代码。事件或编写代码。n举例:3 3、其他组件、其他组件 n(1
9、1)CoolBarCoolBarn容器组件,可以包括多个工具栏;容器组件,可以包括多个工具栏;n(2 2)控件栏组件)控件栏组件 ContrloBarContrloBarn特点:可以管理多个控件,允许用户在特点:可以管理多个控件,允许用户在运行时拖动并重新布置工具栏。运行时拖动并重新布置工具栏。二、状态栏n在win32组件页中1、状态栏的基本属性nAlign属性:一般设为alBottom,使它靠窗体的底部对齐。nSimplePanel属性:n为False时,可有多个显示区域。n为True时,状态栏将只有一个显示区域,显示在SimpleText中设定的文本。nPanels属性:状态栏子面板的常用
10、属性状态栏子面板的常用属性属性属性说说明明AlignmentAlignment文文 字字 的的 对对 齐齐 格格 式式:taLeftJustifytaLeftJustify、taCentertaCenter、taRightJustifytaRightJustifyBevelBevel用于决定子面板的用于决定子面板的风风格格StyleStyle用用于于决决定定在在子子面面板板内内显显示示的的内内容容是是文文字字(psTextpsText)还还 是是 用用 户户 自自 己己 绘绘 制制 的的 图图 形形(psOwnerDrawpsOwnerDraw)TextText用于保存在子面板内要用于保存在子
11、面板内要显显示的文字示的文字WidthWidth决定子面板的决定子面板的长长度度 2、动态刷新状态信息(1)显示系统时间。可在Timer1的onTimer事件中写入:StatusBar1.Panels3.Text:=TimeToStr(Time);(2)显示当前光标的位置。(3)修改当前状态。4.3 消息框与信息函数n所谓消息框,指的是显示提示信息的一些简单对话框。n这些对话框无须用户任何输入,只需简单这些对话框无须用户任何输入,只需简单地确认或取消即可。地确认或取消即可。n消息框的显示无须使用对话框组件,消息框的显示无须使用对话框组件,Delphi Delphi 用函数和过程用来显示消息框。
12、用函数和过程用来显示消息框。n1ShowMessage过程:procedure ShowMessage(Const Msg:String);n用于显示一个带有OK按钮的消息框,其中Msg为显示内容。n2MessageDlg函数:function MessageDlg(Const Msg:String;Dlgtype:TmsgDlgType;Buttons:TMsgDlgButtons;HelpCtx:Longint):Word;n用于在屏幕中央显示提示信息。显示内容消息框的类型:mtInformation、mtError、mtWarning、mtConfirmationmtCustom按钮类型
13、:mbYes、mbNombOk、mbCancelmbHelp、mbAbortmbYesNoCancel、mbRetry、mbIgnore等返回值:mrYes、mrNo、mrOk、mrCancel、mrHelp、mrAbort、mrRetry、mrIgnore、mrNonen例如:n窗体关闭前提示确定要退出吗?4.4 输入框与输入函数n 所谓输入框,指的是带有一个编辑框、用于输入简单字符串信息的一些简单对话框。n 输入框的显示同样无须使用对话框组件,Delphi提供了两个函数用于显示输入框。n1InputBox函数:nfunction InputBox(Const ACaption:String
14、;Aprompt,Adefault:StringAprompt,Adefault:String):StringString;n参数说明:nACaption参数:对话框的标题。nAPrompt参数:编辑框的输入提示。nADefault参数:编辑框中的缺省字符串。n 用于显示带有个编辑框的对话框,当用户按OK按钮返回时,返回值为编辑框中的输入内容。n 当用户按Cancel按钮返回时,返回值为缺省字符串。n举例:前例中再启动主窗体前,显示输入对话框,输入用户名并在状态栏显示。n2InputQuery函数:nfunction InputQuery(Const ACaption:String;AProm
15、ptAPrompt:String;VarString;Var Value Value:String)String):BooleanBoolean;nACaption参数和APrompt参数的含义与InputBox函数相同。不同之处是:n 当用户按OK按钮返回时,返回值为True,编辑框中的输入内容被赋给Value字符串;当用户按Cancel按钮返回时,返回值为False,缺省字符串被赋给Value字符串。n修改前例实现相同操作。4.5 MDI4.5 MDI多文档界面程多文档界面程序设计序设计n多文档界面MDI,全称Multiple Document Interfacen单文档界面SDI,全称S
16、ingle Document Interface一、TForm类和MDI窗体n1.TForm类n有模式的,调用ShowModal方法n无模式的,调用Show方法n2.MDI应用程序的结构n主窗口,FormStyle属性为fsMDIFormn子窗口,FormStyle属性为fsMDIChildn如果FormStyle属性设为fsNormal,表示是一般Formn一个一个MDIMDI程序只能有一个主窗体,程序只能有一个主窗体,FormStyle属性指定为fsMDIForm,同时把这个Form指定为程序的主Form。n要创建一个“子”Form,首先要使用File菜单上的New Form命令向项目中加
17、入一个新的Form,把这个Form的FormStyle特性设为fsMDIChild。二、创建子窗体n1启动时静态建立子窗体n在Project Options对话框的Forms页Auto-Auto-Create FormsCreate Forms框中列出的是由框中列出的是由DelphiDelphi自动创建自动创建的窗体的窗体n如果希望子窗体不在启动时自动建立,而是在运如果希望子窗体不在启动时自动建立,而是在运行期动态创建,就应当把行期动态创建,就应当把FormForm从从Auto-Create Auto-Create FormsForms列表框中移到列表框中移到Available FormsAv
18、ailable Forms列表框列表框中。中。n2运行期动态建立子窗体n如果一个“子”Form没有出现在Auto-create Forms列表框中,这意味着必须在运行期动态创建这个Form的实体。n方法:先定义子窗体对象,再创建这个对象。n举例:三、MDI的属性和方法n1MDI的主要属性(1)WindowMenu属性(2)ActiveMDIChild属性:只读,获得当前活动的子窗口(3)MDIChildren和MDIChildCount属性nMDIChildren属性保存了主窗口中的所有子窗口。它是一个数组,下标类型为整型,从0开始,元素类型为TForm。子窗口的顺序与其生成的顺序正好相反。n
19、MDIChildCount属性记录着子窗口的个数。n如:MDIChildrenMDIChildCount-1返回第1个生成的子窗口。n2MDI的主要方法(1)Next和Previous方法nNext和Previous方法用于改变当前获得焦点的子窗口。(2)Cascade和Tile方法n设置子窗口的层叠、分隔排列方式。(3)ArrangeIcons方法n排列最小化的子窗口图标,使得它们整齐排列且不互相重叠。四、MDI的菜单设计n1合并菜单n当创建子窗口之后,系统就将主窗口和子窗口的菜单合并起来显示。n合并后的显示次序是按照菜单项的GroupIndex属性值自动从小到大排列的。n如果有两个的Gro
20、upIndex相同,合并后,子窗口的菜单项将替换主窗口的菜单项。n2建立窗口菜单n可以采用2种方式:n(1)建立菜单项并调用方法n例如:层叠方式排列子窗口n FormMain.Cascade;n(2)使用ActionList组件n将系统定义的Window组的WindowCascade等行为加入到ActionList组件中,相应的菜单项只要将其Action属性值选择某个行为(如WindowCascadel)即可,而不需写程序。五、Screen变量nScreen变量属于TScreen类,系统自动创建,记录和控制着整个屏幕的状态。n主要属性:nActiveControlnCursornCursors
21、nFormCountnFonts六、Application变量n任何基于窗体的Delphi程序都包含一个全局变量Application,它的类型是TApplication。TApplication封装了一些属性和方法。n通过菜单ProjectOptionsApplication页,设置一些有关TApplication的属性。n1TApplication类的主要属性 n(1)ExeName属性 nExeName属性能够返回应用程序的全路径和文件名。这个属性在运行时是只读的。n例如:nMainForm.Caption=ExtractFileName(Application.ExeName);n(2
22、)MainForm属性 nMainForm是一个只读的属性。只能在设计时通过Project Options对话框上的Forms页把一个窗体指定为主窗体。n(3)Icon属性 nIcon属性用于设置当应用程序最小化时代表应用程序的图标。可以修改Icon属性来改变应用程序的图标。n(4)Title属性 n(5)HelpFile属性 n 用于指定帮助文件的文件名。n(6)ShowMainForm属性 n 这是一个布尔类型的属性,它控制并指示在启动程序时是否显示主窗体。如在dpr文件中将主程序改为如下代码:n begin n Application.Initialize;n Application.S
23、howMainForm:=false:n Application.CreateForm(TForm1.form1);n Application.Run;n end;n则程序运行时不显示主窗体。n2TApplication的主要方法nCreateForm:方法用于创建一个窗体的实例。nMinimize:用于把应用程序的主窗体最小化。nRestore:用于把应用程序的主窗体恢复为最大化或最小化之前的大小。nTerminate:用于终止应用程序的执行。n 3TApplication的常用事件 n(1)onActivate和onDeActivate事件 n(2)onHelp事件 :当用户请求帮助的时候将触发这个事件。例如,用户按下F1键4.6 多文档学生档案系统n练习建立MDI应用程序。