Delphi实用教程 第5章 多窗体和MDI窗体 第5章 多窗体和MDI窗体.

Slides:



Advertisements
Similar presentations
人间美地 ─ 蝶韵阁. ~ 蝶 韵 阁 ~ 位桃园大溪镇,三峡交流道下去 12 分钟车程 住着潇洒的朱大哥、毛毛夫妻一家 还有 自由飞翔的蓝鹊、飞鹰、松鼠 一群悠闲采蜜翩翩飞舞的凤蝶 更惊讶的是一对珍贵的娇客 ─ 蜂蛾 那根长长的吸管是大自然的奇迹 蜂蛾已让我们惊艳不已 但 ─ 还有更多的美丽与惊奇、、、.
Advertisements

彰化縣和美鎮 和仁國民小學 本土語言教育暨 台灣母語日訪視 簡 報. 一. 學校概況 校地面積 校地面積廣達三公頃 學生活動空間寬廣!
數學社群 教學分享 和平國小 陳淑渟老師 數學社群 教學分享 和平國小 陳淑渟老師. 小一常發生的 學習困難 定位板的應用 序數的學習 困難與教學 突破 主題大綱.
健康.安全年 製作 : 黃靜怡. 安全第一,我想,這是一句大家都耳熟能詳的話吧,說安全, 簡單的說,就是注意自己、眼睛要看、耳朵要聽,不要莽莽 撞撞的,安全是大家所期望的,而父母總是常常掛念我們, 就是希望我們能安全,畢竟,孩子是父母一輩子的牽掛,會 擔心我們的,往往就是關心我們的人,每個人都希望自己做.
我的未来不是梦 攀枝花市经贸旅游学校. 1. 文中案例王萍苦恼的原因是 什么? 2. 你有哪些办法可以帮助王萍? 导入 思考  谁来帮帮她?
【大願文教基金會】園藝治療師 黃盛璘督導、王麗玲執行. 年齡在 2 足歲以上 18 歲以下,經醫學中 心或區域醫 院鑑定為 重度、極重度 身心障礙,不具行動能 力、且不能自理生活,並持有身心障礙 手冊的新北市居民。 八里愛心教養院~服務對象.
第二十九课 致儿子书 张之洞.
如何陪伴孩子度過 高三歲月.
绝对成交的十大步骤.
把人的生命写在教育的旗帜上 了解一个案件 欣赏一篇散文 学习一种理念 感悟一个故事.
酸鹼食物對人體的影響性.
六大原因造成 現代人身體酸性化.
【2008年高考重庆卷】A.当冰雪皑皑之际,唯独梅花昂然绽放于枝头,对生命充满希望和自信,教人精神为之一振。
翰林版國文第三冊第六課 《迢迢牽牛星》 設計者:郭宜幸.
景区讲解常用方法.
與櫻花有約 櫻花開放時間 櫻花前線 賞花便當 京都機場(附近) 夜櫻 哲學之道.
班級愛心小護士訓練 臺南市東區勝利國小 健康中心.
我在哈佛、麥肯錫 學到的一流工作術 富坂美織◎著.
项目四 营业税 山东经贸职业学院 财政金融系.
敬业·创业·乐业 ——我的成长之路 赵谦翔.
四年七班親師會 自信學習,健康成長.
人間美地─ 蝶韻閣 ..
醫療旅遊.
社會發展學系 簡 介.
人物小传:杨嘉嵋,1975年出生,国家 重点四川大学本科毕业,中国传媒大学博士毕业,现为上海政法学院讲师。多次发表学术论文:《试论社会主义法治的目标和现代法治精神的培育》发表于钦州师范高等专科学校校报2000年04期,《西部在引进,利用外资中应重视的问题及对策》发表于四川师范学院学报2000年05期,《试论毛泽东的刑法思想》发表于达县师范高等专科学校学报2001年01期,《美国著名主持人的十点共性》发表于中国广播电视学刊2007年08期,《我国电视法治节目的现状与提升》发表于新闻战线2008年08期。
第二章 语用的主要要素分析 第一节 语境 第二节 预设 第三节 角色 第四节 视角.
从从容容中考去.
教育部103年紫錐花運動 反毒學習單 國小高年級.
美洲集团散拼项目分享 李维迪.
美麗的星空 陳弦希製作.
性別刻板印象.
初三8班(上) 期末总结班会.
初三(上) 期末总结班会.
一週菜單設計.
改革开放给我们带来的变化 系别:11商务流通系 班级:物流四班 组员:物四男生组.
歡 迎 光 臨.
大村國小 尋根之旅.
那年我參加瑞士巴塞爾博覽會, 除了接單做貿易,還零售賣品, 以擴大出口商品的影響。
中國醫藥大學 北港分部簡報.
西安国际港务区 入区企业相关地方税收 知识培训
拒绝毒品健康成长 ——张鸿谊.
动商研究中心 让高校体育驶入快车道 --国家“学校体育”相关文件解读 2016 年 05 月 15 日.
第三章 领悟人生真谛 创造人生价值 第一节 树立正确的人生观 创造有价值的人生 第二节 第三节 科学对待人生环境.
鸟的生殖和发育.
親職學習多面體 中學篇 第四課 管教之道 (二) 1 1.
會議管理 楊百川老師.
5.4 预测中的专家评估法 专家会议法 专家评估法 德尔菲法.
第2章 建立Android應用程式 2-1 Java語言、XML文件與Android 2-2 建立第一個Android應用程式
CH3 Eclipse.
程式簡介、VB、物件導向 國立北門高中 林明璋.
第十章 進階輸出入元件(一) StringGrid 10-1 核對框(CheckBox)
第二十八章 開發新的VCL元件 雖然BCB內提供了很多VCL元件,但是一定還有一些我們常常需要用的介面並沒有製作成VCL元件,或是一些個人化的介面,我們也有需要做成VCL元件。在第十三章,我們將介紹如何自行開發新的VCL元件。
行動研究就是一種行動性的研究,由行動者來進行研究,而不是由外於行動領域的學者與與科學家來進行,研究的問題也取自行動。
Lotus Domino R7 Designer
Chapter 1 複習.
第17章 使用B4J建立跨平台應用程式 17-1 認識B4J整合開發環境 17-2 下載與安裝B4J開發環境
陈 峦 副教授 研究院大楼316# 电子科技大学 能源科学与工程学院
第二十三章 元件的製作 23-1 類別轉為元件 23-2 繼承可視元件 23-3 複合式元件.
程式語言 I – VISUAL BASIC 選擇結構語法與應用 Chapter 7 認知
副程式 將可以重複使用的程式區塊獨立而成 寫在Private Sub 函數名稱() 副程式碼 End Sub 呼叫副程式
Delphi程序设计与应用教程 宁正元 主编 刘雄恩 陈琼 副主编 中国水利水电出版社
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
2018/12/9 GDP系统 采购文控操作手册 GDP项目组.
软件工程 第四章 软件设计 软件过程设计技术与工具.
計算機程式 Visual BASIC 程式設計
MPLAB IDE 8 建立專案.
Usage Eclipse 敏捷方法工具介紹 實驗室網站:
認識 Excel 與SPSS.
熟悉VC++开发环境.
Presentation transcript:

Delphi实用教程 第5章 多窗体和MDI窗体 第5章 多窗体和MDI窗体

5.1 多窗体基本概念 一个应用程序能够同时打开多个文档窗体,而且这些窗体的外观基本一致,具有共同的系统菜单,每个文档窗体彼此之间可以相互切换,这种应用程序称为多文档程序。 第5章 多窗体和MDI窗体

5.2 多窗体应用程序设计 5.2.1 窗体的创建 新建一个项目时,项目中已包含了一个名为Form1的窗体。若要向项目中加入新的窗体,有两种方法: 执行FileNewForm菜单命令,项目中会增加一个名为Form2的新窗体,按此方法,可以为程序加入多个窗体; 使用窗体模板,Delphi 7的设计思想是代码重用性,所以系统提供了一些用户可重复应用的窗体模板。 例: 要为项目增加一个About对话框窗体,可以选择FileOther菜单命令,在Forms选项卡中选择About Box对话框,项目中会增加一个About窗体。 第5章 多窗体和MDI窗体

5.2.1 窗体的创建 在默认情况下,工程中所有的窗体在程序运行时都是自动创建的,这是因为工程文件在执行时,由系统执行了创建窗体的过程。 例如包含了两个窗体的工程文件代码清单如下: Program Project1; uses Forms, Unit1 in 'Unit1.pas'{Form1}, Unit2 in 'Unit2.pas' {AboutBox}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1,Form1); Application.CreateForm(TAboutBox,AboutBox); Application.Run; End. 第5章 多窗体和MDI窗体

5.2.1 窗体的创建 可以动态地创建该窗体对象,而当该窗体关闭时,即将该窗体清除出内存。 要实现这种操作,首先使用ProjectOptions菜单命令打开Form 选项卡。将AboutBox窗体移动到右侧的列表框,即不允许系统 自动创建AboutBox窗体。 添加代码实现动态创建: procedure TForm1.AboutExecute(Sender: TObjict); var About:TAboutBox; begin About:=TAboutBox.Create(Self); try About.ShowModal; finally About.Free; end; 第5章 多窗体和MDI窗体

5.2.2 窗体的调用 两种方法调用: Show方法:调用模态窗体 ShowModal方法:调用非模态窗体 两者的返回值用来表明对话框是如何关闭的。 第5章 多窗体和MDI窗体

5.2.3 窗体的重用 创建窗体模板 创建窗体样本。 在(1)所创建的窗体区域中单击鼠标右键,在快捷菜单中选择Add To Repository命令项,弹出Add To Repository对话框。 第5章 多窗体和MDI窗体

5.2.3 窗体的重用 (3) 设置所创建窗体模板的属性。 (4) 单击OK按钮,在所弹出的确认对话框中单击Yes按钮,即 可将窗体Form1存储为模板。 (5) 通过选择主菜单的NewOther…命令项,打开New Items对 话框的Dialogs选项卡,可以看到新增了一个窗体模板,这样 就可以使用这个模板为项目增加新的窗体了。 选择窗体模板对话框 第5章 多窗体和MDI窗体

5.2.3 窗体的重用 2. 使用Frame对象 利用Frame对象可以将几个组件封装在一起,工作时可以像使用普通组件一样,将这个Frame组件放置在窗体上,可以设置这个Frame组件的属性和事件。 【例】使用Frame对象进行组件封装。 (1)选择FileNewFrame菜单命令,将新建一个空的Frame 窗体 (2)在Frame窗体中放置一个Memo组件和三个Button组件,进一步 设置这些组件的属性,并编写组件事件的处理过程。 第5章 多窗体和MDI窗体

5.2.3 窗体的重用 (3)选择主菜单的FileSave命令项,保存这个Frame窗体的单 元文件。 (4)将所创建的Frame对象加入到组件选项页中。在Frame2窗体 区域,在弹出菜单的快捷菜单中选择Add To Palette菜单命 令,就会弹出对话框,在该对话框的Component name编辑框 中填入组件名,然后在下拉列表中选择希望加入的组件选项 页,最后可用Change…按钮选择一个合适的组件模板图标。 新增加的组件 设置组件模板属性 第5章 多窗体和MDI窗体

5.2.3 窗体的重用 (5) 使用自己创建Frame对象就像使用其他组件一样。 Frame对象 Form窗口中放置Frame对象 第5章 多窗体和MDI窗体

5.3 MDI窗体 5.3.1 MDI窗体基本概念 MDI(Multiple Document Interface)多文档界面是一个能够同时处理多重文档的应用程序的用户界面和窗体结构。 MDI中包含一个父窗体与多个子窗体,他们之间是一种隶属关系,而子窗体之间是一种平等的关系。每个子窗体都是一个独立的窗体,但它们没有菜单,只有父窗体才有菜单,不过这些菜单项同时也可以被用于子窗体,一次只有一个子窗体被激活,子窗体不能移动到父窗体以外的区域。 第5章 多窗体和MDI窗体

5.3.2 建立MDI父子窗体 1.创建父窗体 普通窗体的FormStyle属性设置为fsMDIForm即可 2. 创建子窗体 普通窗体的FormStyle属性设置为fsMDIChild即可。 【例】本例创建一个MDI应用程序,父窗体中含有3个子窗体。 (1)新建一个项目,将Form1窗体的Caption属性改为“父窗体”, FormStyle属性设置为fsMDIForm。 (2)选择FileNewForm菜单项,新建窗体Form2,将Form2 的Caption属性改为“子窗体1”,FormStyle属性设置为fsMDIChild。 (3)按第2步的方法,再新建两个子窗体Form3和Form4,Canption属性 分别设置为“子窗体2”、“子窗体3”,FormStyle属性设置为 fsMDIChild均设置为fsMDIChild。 (4)按F9键运行程序。 第5章 多窗体和MDI窗体

5.3.2 建立MDI父子窗体 运行结果 第5章 多窗体和MDI窗体

创建MDI应用程序界面框架 【例】使用Delphi 7的创建MDI应用程序向导,创建一个MDI应用程序。 (1)选择FileNewOther…菜单命令,打开New Items对 话框。 (2)在New Items对话框中选择Projects选项卡,双击其中 的MDI Application,将弹出Select Directory对话框, 在其中选择保存路径,单击OK。 Select Directory对话框 第5章 多窗体和MDI窗体

两个子窗体,可通过选择主菜单的ViewForms菜单命令,打开View Form对话框,从中选择它们来查看。 创建MDI应用程序界面框架 两个子窗体,可通过选择主菜单的ViewForms菜单命令,打开View Form对话框,从中选择它们来查看。 新创建MDI应用程序 View Form对话框 第5章 多窗体和MDI窗体

5.3.3 合并菜单 合并父子菜单项 如果子窗体的某菜单项的GroupIndex属性与主窗体的某菜单 单项将插入到主窗体菜单条上。 第5章 多窗体和MDI窗体

5.3.3 合并菜单 【例】对应用程序进行菜单合并。 首先,双击该组件 设置GroupIndex值分别为为1,2,3,8 然后,选中File菜单项 第5章 多窗体和MDI窗体

5.3.3 合并菜单 子窗口菜单的处理: 设置GroupIndex值为1 设置GroupIndex值为4 自动生成的File菜单 添加Setup菜单项后的子窗体 第5章 多窗体和MDI窗体

子窗体的File菜单取代了主窗体的File菜单 5.3.3 合并菜单 运行程序: 增加了Setup菜单项 主窗体菜单 子窗体的File菜单取代了主窗体的File菜单 子窗体菜单,新的主窗体菜单 第5章 多窗体和MDI窗体

5.3.3 合并菜单 要调用主窗体过程,只需引用该单元即可,即在MDIChild单元文件接口部分添加以下行: (1) 添加组件 2. 调用父窗体 要调用主窗体过程,只需引用该单元即可,即在MDIChild单元文件接口部分添加以下行: implementation uses Main; ($R *.DFM) 3. 创建子窗体事件处理过程 (1) 添加组件 将Actionlist组件放置到窗体左下方,用它来管理针对子窗体 的事件处理过程,然后在其旁边依次放置SaveDialog、 FontDialog、ColorDialog、PrintDialog、PrintersetupDialog对 话框组件。 第5章 多窗体和MDI窗体

5.3.3 合并菜单 (2) 添加代码 双击Actionlist组件,在弹出的Action编辑器中选择“新建”, 在Action编辑器窗体中,双击右栏中的Action对象即可创建 Action对象的事件处理过程。在这里仅给出相应Action的 OnExecute事件的处理过程。 Action编辑框属性设置 第5章 多窗体和MDI窗体

5.3.3 合并菜单 Procedure TMDIFileChild.ColorSetupExecuse(Sender:Tobject) Begin If ColorDialog1.Execute then Memo1.Color:=ColorDialog1.Color; End; Procedure TMIFileChild.FontSetupExecute(Sender:Tobject); If FontDialog1.Execute then Font:=FontDialog1.Font; Procedure TMDIFileChild.FilesaveExecute(Sender:Tobject); Var Filename:String; Filename:=SaveDialog1.FileName; Memo1.Lines.SaveToFile(FileName); 第5章 多窗体和MDI窗体

5.3.3 合并菜单 Procedure TMDIFileChild.FilePrintExecute(Sender:Tobject); Var Line:Integer; PrintText:System.text; Begin If PrintDialog1.Execute then AssignPrn(PrintText); Rewrite(PrintText); Printer.Canvas.Font:=Memo1.Font; For Line:=0 to Memo1.Lines.Count –1 do Writeln(PrintText,Memo1.lines[Line]); System.Close(PrintText); End; Procedure TMDIFileChild.PrintSetupSetup1Clicd(Sender: Tobject); PrinterSetupDialog1.Execute 第5章 多窗体和MDI窗体

5.3.3 合并菜单 (3) 建立连接 建立了代码,还必通过相应的连接,使菜单项能够调用这些 程序代码,双击子窗体中的Mainmenu组件,在Action属性 中选择相应的子菜单项事件代码。 (4)按F9运行程序 打开一个子窗体,会发现File菜单项中不但具有相应的图标, 并且具备了文件保存、打印及设置功能。在Setup菜单项中, 或以设置文本字体,也可以更改文本编辑框背景颜色。 第5章 多窗体和MDI窗体

5.3.4 排列与存取MDI子窗体 常用排列子窗体方法: 1. Cascade方法 子窗体的层叠排列 2. Tile方法 子窗体的平铺排列 TileMode属性,它有两种取值: ①tbHorizontal方式排列可使每个子窗体的 宽度扩展到父窗体的宽度 ②tbVertical方式可使每个子窗体高度扩展 到父窗体的高度。 3. 关闭子窗体 窗体增加OnClose事件处理程序 procedureTMDIChild.FormClose(Sender:Tobject;var Action:TcloseAction); begin Action:=caFree; End; 第5章 多窗体和MDI窗体

5.3.4 排列与存取MDI子窗体 4. ArrangeIcons方法 重新排列最小化的图标. ●在Delphi自动创建的MDI程序中,利用Actionlist提供的标准窗 体事件都可以轻松完成。包括MDI程序中的子窗体的层叠、平铺、重排、最小化及关闭动作,它们都是TWindowAction 的派生类,并且只能作用于MDI程序中的子窗体。 TWindowAction对象的方法及说明 第5章 多窗体和MDI窗体