delphi 动态多页面
二级DELPHI控件:多页控制组件PageControl
PageControl组件位于组件板的Win32页中,该组件⽤于实现窗体上多页⾯技术,每个页⾯上均能添加若⼲控件。
程序运⾏时,单击页⾯标签就可以在多页之间切换。
1.建⽴多页 ⽤⿏标右键单击PageControl组件,在弹出式菜单中选择New Page⼦菜单可添加新页,⽤Delete⼦菜单可删除当前页。
读者应注意: ·单击PageControl组件标题时,选中的是PageControl对象。
·单击PageControl组件页⾯时,选中的是TabSheet对象。
选择不同对象,在对象监视器中将显⽰不同对象的属性,即显⽰PageControl对象或TabSheet对象的属性。
2.PageControl对象的主要属性 (1)ActivePage属性 ActivePage属性⽤于设置PageControl组件的当前页。
单击ActivePage属性的下拉列表框,从列表框中可选择不同页⾯。
(2)Muhiline属性 Muhiline属性值为True时,PageControl控件呈多⾏风格。
(3)Image属性 Image属性表⽰与PageControl相关联的ImageList名。
选定后PageControl就可使⽤Image-List中的图像。
(4)Pages属性 PageControl的所有页⾯记录在Page属性中,Pages是运⾏时的属性,即设计时在对象监视器中不可见,⽽运⾏时却能在程序中引⽤。
Pages是⼀个数组,其元素类型为TTabSheet,元素个数放在PageCount中,Pages[0]是第⼀页,Pages[PageCount⼀1]是最后⼀页。
(5)ActivePageIndex属性 ActivePageIndex属性是当前活动页的Page属性的下标,从0开始计数。
ActivePageIndex也是运⾏时的属性。
3.TabSheet对象的常⽤属性 (1)Caption属性 该属性⽤于设置页标签名称。
Borland Delphi教学讲义 第6章
6.2 多页面窗体
• 6.2.1 多页面窗体的概念 • 在一个应用程序运行时,打开一个主窗体,这个主窗体又由至少两 个文档窗体界面组成,而且这些文档窗体的外观基本一致,具有共 同的系统菜单,每个文档窗体彼此之间可以通过单击文档窗体进行 相互切换。在Delphi中把使用这种技术的窗体称作多页面窗体。 • 6.2.2 TPageControl组件 • 1.用途 • TPageControl页面组件位于组件面板的Win32选项卡上(如图4-4), 用来制作笔记本式的页面标签,是个可多页重叠的显示页面,用户 可通过单击组件顶部(或底部)的页面标签进行页面之间的切换。
6.1 创建窗体
• 【例6-2】设计一个程序,完成以下功能:选择一种颜色,单击“确 定”按钮表示设置为这种颜色,并在“显示颜色”的窗体中显示结 7所 示。
图6-7 显示颜色窗体界面
图6-7 显示颜色窗体界面
6.1 创建窗体
• (1) 新建工程。选择File→New→Application,在默认窗体 上添加一个TLabel组件,三个TRadioButton组件和两个 TButton组件。 • (2) 窗体及组件的属性设置。按书上表6-2设置窗体及组件 的属性值。 • (3) 添加显示窗体。选择File→New→Form,在新的窗体上 添加两个TLabel组件。 • (4) 新的窗体及组件的属性设置。按表6-3设置窗体及组件 的属性值。 • (5) 编写代码。
6.1 创建窗体
• 6.1.2 选择、放置和编辑组件 • 窗体的设计实际上是往窗体中添加组件的过程,如何选择、放置、 编辑组件是窗体设计的主要内容。 • 1.选择和放置组件 • 当创建了一个空白的窗体后,接下来就要在组件面板上选择—个 组件并将它放置在窗体内,通常有两种方法: • (1) 用鼠标双击组件面板上的一个组件图标,Delphi则以默认的大 小把它放在窗体的中间。 • (2) 单击一个组件图标,选中该组件,再在窗体上想放置组件的位 置的左上角单击一下,Delphi以默认大小将它放置在那里,然后 根据情况改变组件的位置和大小。
用Delphi做简单的网页浏览器
用Delphi做简单的网页浏览器
1,在internet中找到webbrowers
2,拖到窗体上。
3,该组件常用方法有
begin
wb1.GoForward;//前进
end;
procedure TForm1.btn3Click(Sender:TObject);
begin
wb1.Stop;//停止
end;
procedure TForm1.btn4Click(Sender:TObject);
begin
wb1.Refresh;//刷新
end;
procedure TForm1.btn5Click(Sender:TObject);
begin
wb1.GoHome;//返回主页
edt1.Text:='about blank';
end;
procedure TForm1.tlb1Click(Sender:TObject);
begin
close;//退出
Navigate浏览
stop停goforward前进
这些都是访问网站常用的几个动作
4,设置界面
5,输入代码如下:
procedure TForm1.btn7Click(Sender:TObject);
begin
wb1.Navigate(edt1.Text);//浏览
end;
end;
procedure TForm1.btn1Click(Sender:TObject);
delphiPDF控件介绍
delphiPDF控件介绍PDF控件介绍概述llPDFLib 是⽤于创建 PDF ⽂档的纯 Object Pascal 库。
该库不使⽤任何 DLL 或外部第三⽅软件来⽣成 PDF ⽂件。
库包括具有属性和⽅法的TPDFDocument组件,如 Delphi 的TPrinter,但旨在⽣成 PDF ⽂件。
特征真正的 Canvas.Handle (HDC)。
Unicode ⽀持。
PDF/A-1b ⽀持。
加密(40、128 位 RC4 和 128、256 AES)。
书签(⽀持俄语、⼟⽿其语、波罗的海、东欧、希腊、中⽇韩语⾔)。
填充图案⽀持。
可选内容(层)⽀持。
交互式表单(Acroforms)(buttons, radiobuttons, checkboxes, comboboxes, text input fields)。
压缩。
将输出呈现到 Stream 中,以便与 CGI/ISAPI 应⽤程序⼀起使⽤。
⽔印。
数字签名。
缩略图。
图像压缩(Jpeg、Flate、CCITT 3、CCITT 3 (2D)、CCITT 4、JBIG2)。
过滤器 QReport、FastReport、Report Builder。
C++ Builder 4、5、6、2006 ⽀持。
注释(⽀持俄语、⼟⽿其语、波罗的海、东欧、希腊、中⽇韩语⾔)。
嵌⼊ True Type 字体(TTF 和 TTC)。
模拟 Underline 和 StrikeOut 字体样式。
⼀组⽤于使⽤ DBGrids 的组件。
True Type 字体⼦集。
概述Synopse PDF 引擎是⼀个功能齐全的开源 PDF ⽂档创建库,⽤于 Delphi 和 FPC,嵌⼊在⼀个单元中。
被⽤于中,⽤于从⽣成的报告创建 PDF ⽂件。
如果下载整个mORMot源代码,则不需要这个单独的包。
特征纯 Delphi 代码,没有外部 .dll,并且为您的可执⾏⽂件添加了⾮常⼩的代码⼤⼩;针对Delphi 6及以上版本,包括Unicode版本的Delphi和最新版本的FPC,适⽤于Win32和Win64平台,并提供完整的源代码;包括⼤多数⽮量绘图命令,包括⽂本、线条或曲线;渲染位图和图元⽂件(即使是⼤多数具有剪辑和区域功能的 .emf ⽂件);引⼊元数据、书签和⼤纲信息;⽣成⾮常⼩的 .pdf ⽂件;可选择使⽤ 40 位或 128 位密钥;以低内存开销快速⽣成⽂件(⽤数千页测试);访问⼀个真正的 VCL TCanvas 实例来创建 PDF 内容;可选择嵌⼊ True Type 字体⼦集;Unicode 就绪,即使使⽤ Unicode 之前的 Delphi 版本,包括⾼级;可以发布PDF/A-1存档⽂件;⽤于许多应⽤程序,并定期进⾏增强,主要来⾃活跃的最终⽤户;根据获得许可。
用Delphi+IntraWeb开发动态网站技术系列讲座:网站特定功能设计
择 要 上传 的 文件 . . 。
I ae C po 空缺 ( O R ci d i WLbl 3 atn i 由 n ee e Fe v l
对于 网站 的开发人员 来讲 ,经常 会使用 C t t 上 传和下 u Fp e
载 一 些 文 件 ,那 么 用 It We 如 何 实 现 客 户 端 的文 件 上 传 呢 ? na b r
事件显示相关信息)
Vii e R s sbl e
实际上 ,It We nr b组件 已经封装 了许多 方法 ,只要 使用这些方 a
法 就 可 以很 快 开 发 出具 有 文 件 上 传 功 能 的 网站 要 实 现 这 两 个
2 TWFl I i e
I e E- t 0 R ci dj 见代 Wnl1  ̄n n eev Fll , s e e e详 码部 分 )
重要而又常用的功能 ,只要使用 It We n a b的两个接受和发送文 r 件的 函数 ,编写相应的代码就 可以了。
一
3 rWB t n WB tn C p o 开 始 传 r uo I uo atn J t t 1 i
、
文件上传
上传功能 的页 面,主要有 三个基本功能 :一是将要创建 的
b gn e i
件 ,三 个 TwI e 控 件 一 个 TWB t n按 钮 和 一 个 TWFl 1 l I ut o I i e
控件 。其 中 TW6e控件就 是封装 网络文件上传 等功能 的一个 I 1 控件 ,并将 该窗体 的单 元文件 以 uFl pod命名存盘 。页面 _iU l e a
t各 部 分 的 设 置 及 功 能 如 表 1 示 ,调 整 后 的布 局 样 式 如 图2 所
DELPHI中EXCEL组件的使用方法
DELPHI中EXCEL组件的使用方法DELPHI中EXCEL组件的使用方法:一) 使用动态创建的方法首先创建Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObject( 'Excel.Application' );1) 显示当前窗口:ExcelApp.Visible := True;2) 更改Excel 标题栏:ExcelApp.Caption := '应用程序调用Microsoft Excel';3) 添加新工作簿:ExcelApp.WorkBooks.Add;4) 打开已存在的工作簿:ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );5) 设置第2个工作表为活动工作表:ExcelApp.WorkSheets[2].Activate;或ExcelApp.WorksSheets[ 'Sheet2' ].Activate;6) 给单元格赋值:ExcelApp.Cells[1,4].Value := '第一行第四列';7) 设置指定列的宽度(单位:字符个数),以第一列为例:ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米9) 在第8行之前插入分页符:ExcelApp.WorkSheets[1].Rows.PageBreak := 1;10) 在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;11) 指定边框线宽度:ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;1-左2-右3-顶4-底5-斜( \ ) 6-斜( / )12) 清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;13) 设置第一行字体属性:ExcelApp.ActiveSheet.Rows[1] := '隶书';ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue; ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;14) 进行页面设置:a.页眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';b.页脚:ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页';c.页眉到顶端边距2cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;d.页脚到底端边距3cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;e.顶边距2cm:ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;f.底边距2cm:ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左边距2cm:ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;h.右边距2cm:ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;i.页面水平居中:ExcelApp.ActiveSheet.PageSetup.CenterHorizontally :=2/0.035;j.页面垂直居中:ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印单元格网线:ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;15) 拷贝操作:a.拷贝整个工作表:ed.Range.Copy;b.拷贝指定区域:ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;c.从A1位置开始粘贴:ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial;d.从文件尾部开始粘贴:ExcelApp.ActiveSheet.Range.PasteSpecial;16) 插入一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Insert;b. ExcelApp.ActiveSheet.Columns[1].Insert;17) 删除一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Delete;b. ExcelApp.ActiveSheet.Columns[1].Delete;18) 打印预览工作表:ExcelApp.ActiveSheet.PrintPreview;19) 打印输出工作表:ExcelApp.ActiveSheet.PrintOut;20) 工作表保存:if not ExcelApp.ActiveWorkBook.Saved thenExcelApp.ActiveSheet.PrintPreview;21) 工作表另存为:ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' );22) 放弃存盘:ExcelApp.ActiveWorkBook.Saved := True;23) 关闭工作簿:ExcelApp.WorkBooks.Close;24) 退出Excel:ExcelApp.Quit;(二) 使用Delphi 控件方法在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。
Delphi 7组件参考大全
说明:由于每个组件的属性、方法和事件众多,本人也不能一一说的很清楚,还是请大家在实际的过程中不断的琢磨,积累经验吧。
Additional组件页1、TBitBtn组件:该组件是表面显示位图的位图按钮组件,该组件的行为与Tbutton组件相同。
虽然一个TBitBtn组件只能与一个位图相关联,但该位图可以平分为4个部分,分别在按钮处于弹起、按下、禁止和单机状态时显示。
2、TSpeedButton组件:该组件是一个按钮,用于执行一个命令。
该组件与Tbutton、Tbitbtn不同,它不是从窗口组件派生的,因此,没有windows句柄,不能获得焦点。
但是,该组件具有单机事件,并且能够存储位图。
3、TMaskEdit组件:该组件用于建立掩码文本编辑框,这种文本编辑框与用Edit和RichEdit建立的文本框不同在于规定了文本的格式(即掩码)以避免用户输入非法格式的文本。
4、TStringGrid组件:该组件是一个字符串表格组件,用于简化字符串与关联对象间的操作。
该组件提供了许多属性来控制表格的外观,同时也提供了许多方法、事件以电子表格的形式响应用户的动作,此外,该组件还将表格中的字符串关联一个对象,这些对象通过字符串封装了一些信息和行为供用户使用。
5、TImage组件:用TImage组件在窗体上显示一张图片,用TPicture对象在Picture属性中指定一个图标、图元文件、位图图像或用户定义的图像。
6、TShape组件:该组件用于绘制简单的集合图形,如椭圆和正方形等。
该组件引入的属性描述了用于绘制几何图形轮廓的画笔和用于填充的画刷。
如果图形只是TCustomControl对象的图像的一部分,则应使用组件的Canvas方法。
7、TBevel组件:该组件用于建立具有3D和雕刻效果的直线和方框,该组件表示一个斜角轮廓,用其可创建斜角的盒子、方框或线,斜角可用凸起或凹陷状态显示。
8、TScrollBox组件:该组件是一个滚动框组件,用于在窗口中建立一个滚动区域。
delphi webbrowser 使用方法
delphi webbrowser 使用方法Delphi WebBrowser 使用方法Delphi WebBrowser是一种强大的组件,可以嵌入web页面到Delphi应用程序中。
本文将详细介绍使用Delphi WebBrowser的各种方法。
1. 安装和引用要使用Delphi WebBrowser,首先需要做以下几步操作:1.下载并安装Delphi WebBrowser组件包。
2.打开Delphi IDE,创建新项目或打开现有项目。
3.在项目中导入WebBrowser组件包(在IDE的”Component”菜单中选择”Install Packages”)。
2. 创建和显示WebBrowser使用Delphi WebBrowser,你可以轻松创建和显示一个WebBrowser窗口。
以下是一个简单的示例:procedure (Sender: TObject);beginWebBrowser1 := (Self);:= Self;:= alClient;('end;在上述示例中,我们使用Form的OnCreate事件创建了一个WebBrowser对象,并将其展示在一个窗口上。
属性Align设置为alClient,将WebBrowser充满整个窗口。
最后,通过调用Navigate 方法,我们使WebBrowser加载了指定的网址。
3. 与Web页面交互Delphi WebBrowser允许你与嵌入的Web页面进行交互。
以下是一些常用方法的示例:执行JavaScript代码你可以使用Delphi WebBrowser的方法来执行JavaScript代码并获取返回值。
以下示例演示了如何执行JavaScript代码并将结果显示在一个Label控件中:procedure (const ACode: string);varvJsResult: OleVariant;begin// Execute JavaScript code and get the resultvJsResult := (ACode, 'JavaScript');:= vJsResult;end;操作DOM元素要操作Web页面中的DOM元素,你可以使用Delphi WebBrowser 的方法来获取和修改元素的属性和内容。
DELPHI中文帮助手册INDEX
目录第一部分基础篇第一章Delphi快速入门1.1 Delphi基本概念介绍1.1.1 Delphi的基本形式1.1.2 面向对象编程的概念1.2 Delphi2.0快速入门1.2.1 进入Delphi的可视化编程环境1.2.2 Delphi 2.0可视化编程环境介绍1.2.3 设计简单的用户界面1.2.4 改变对象的属性1.2.5 编写事件处理过程1.2.6 使用联机帮助Help1.3 Delphi2.0的可视化部件用法简介1.3.1 常用的文本相关部件1.3.2 按钮和检查框部件1.3.3 分组、分界部件1.3.4 图形、图象部件1.3.5 关系图、文件列表部件1.3.6 滚动部件1.3.7 网格、表格部件1.3.8 多媒体(MultiMedia)和OLE部件1.4 使用非可视部件1.4.1 使用菜单部件1.4.2 使用计时器部件Timer1.4.3 使用公用对话框部件1.5 使用Delphi的工程管理、设计工具1.5.1 创建多窗体工程项目1.5.2 使用工程管理器1.5.3 使用窗体样板和对话框专家1.5.4 使用工程样板和应用专家第二章Delphi 面向对象的编程方法2.1 编写Object Pascal程序代码2.1.1 编写赋值语句2.1.2 标识符的说明与使用2.1.3 过程与函数2.1.4 跳转语句2.1.5 循环语句2.1.6 程序模块2.1.7 关于作用范围2.1.8 编写一个过程或函数2.1.9 定义新的数据类型2.1.10 Object Pascal的库单元Unit 2.2 用Delphi的对象进行编程2.2.1 什么是对象2.2.2 从一个对象中继承数据和方法2.2.3 对象的范围2.2.4 对象公有域和私有域的说明2.2.5 访问对象的域和方法2.2.6 对象变量的赋值2.2.7 建立非可视化对象第三章字符串列表及应用3.1 字符串列表的常用操作3.1.1 列表中操作字符串3.1.2 装载、保存字符串列表3.1.3 创建新的字符串列表3.1.4 往字符串列表中加入对象3.2 字符串列表应用3.2.1 设置自画风格3.2.2 把图像加入字符串列表3.2.3 绘制自画项目第4章文本编辑器的设计4.1 多文档界面4.1.1 创建父窗体4.1.2 创建子窗体4.1.3 创建应用程序菜单与菜单融合4.2 多页面界面4.2.1 静态多页面界面4.2.2 动态多页面界面4.3 文本编辑部件及应用4.3.1 TEdit部件4.3.2 TMemo部件4.4 常用对话框的使用4.4.1 字体对话框部件4.4.2 查找对话框部件4.4.3 替换对话框部件4.4.4 打开对话框部件4.5 文件打印4.5.1 TPrinter对象4.5.2 打印对话框第五章Delphi图形图像编程5.1 图形对象概述5.1.1 TCanvas对象5.1.2 TPen对象5.1.3 TBrush对象5.1.4 TColor类型5.2 图形程序的开发5.2.1 在工具条中加快速键5.2.2 响应鼠标事件5.2.3 绘图功能的实现5.3 图像对象概述5.3.1 TGraphic对象5.3.2 TPicture对象5.3.3 TImage部件5.3.4 TBitmap对象5.4 图像对象的应用第六章文件管理6.1 文件类型和标准过程6.1.1 文本文件6.1.2 记录文件6.1.3 无类型文件6.1.4 Delphi的文件管理标准过程6.2 记录文件的应用6.2.1 任务介绍6.2.2 设计基本思路6.2.3 记录文件的创建和打开6.2.4 记录文件的读入和显示6.2.5 增加一条记录6.2.6 修改记录6.2.7 记录的删除、插入、排序6.2.8 结果综合6.2.9 编辑对话框的输入检查6.2.10 文件和系统的关闭6.2.11 记录文件小结6.3 文件控件的应用6.3.1 文件控件及其相互关系6.3.2 文件名浏览查找系统的设计思路6.3.3 文件名浏览查找系统的功能和实现6.4 文件管理器的实现6.4.1 设计基本思路6.4.2 子窗口的创建、布置和关闭6.4.3 文件控件的联系6.4.4 DriveTabSet的自画风格显示6.4.5 文件管理基本功能的实现6.4.6 其它文件管理功能的实现6.4.7 目录管理功能的实现6.4.8 一些问题的处理6.4.9 小结第七章剪贴板和动态数据交换7.1 剪贴板及其应用7.1.1 使用剪贴板传输文本7.1.2 剪贴板类7.1.3 利用剪贴板传输图像7.1.4 建立自己的剪贴板观察程序7.2 Windows的DDE原理和Dephi的DDE实现机制7.2.1 Windows的DDE原理7.2.2 Delphi的DDE实现机制简介7.3 DDE客户程序的实现7.3.1 联接模式7.3.2 与DDE服务器建立联系7.3.3 数据申请7.3.4 数据发送7.3.5 控制服务器应用程序的执行7.3.6 格式化文本7.3.7 响应DDE事件7.3.8 利用客户程序和Excel交换数据7.3.9 用客户程序控制程序管理器7.4 DDE服务器程序的实现7.4.1 与DDE客户程序建立联接7.4.2 响应DDE事件7.4.3 DDE服务器应用例程7.4.4 小结第八章对象的链接与嵌入8.1 OLE简介8.1.1 OLE1.0和OLE2.08.1.2 链接与嵌入8.1.3 设计状态OLE对象的创建8.1.4 OLE类·文本、项目8.2 设计状态OLE对象的创建8.2.1 TOLEContainer部件8.2.2 OLE对象创建的步骤8.3 OLE应用程序的开发8.3.1 OLE应用程序界面开发8.3.2 插入对象8.3.3 冻结对象8.3.4 粘贴对象8.3.5 释放对象8.3.6 文件中的OLE对象8.4 OLE自动化8.4.1 TAutoObject对象8.4.2 创建OLE自动化服务器8.4.3 自动化另一程序第九章Delphi 拖放(DragDrop)编程9.1 控件的拖放支持9.1.1 拖放属性9.1.2 拖放事件9.1.3 拖放方法9.2 开发拖放功能的一般步骤9.2.1 开始拖动操作9.2.2 接收拖动项目9.2.3 放下拖动项目9.2.4 结束拖动操作9.3 文件管理器的拖放支持第十章动态链接库(DLLs)编程10.1 Windows的动态链接库原理10.1.1 动态链接库的工作原理10.1.2 Windows系统的动态链接库10.2 DLLs的编写和调用10.2.1 DLLs的编写10.2.2 调用DLLs10.2.3 静态调用10.2.4 动态调用10.3 利用DLLs实现数据传输10.3.1 DLL中的全局内存10.3.2 利用DLLs实现应用程序间的数据传输10.4 利用DLLs实现窗体重用10.4.1 利用DLL实现窗体重用的一般步骤10.4.2 窗体重用实例10.4.3 小结第十一章Delphi应用程序的Help应用11.1 Help文件的建立11.1.1 建立Help文件所需的工具和文件11.1.2 Help文件的创建11.2 Delphi应用程序的Help编程11.2.1 定义应用程序的帮助文件11.2.2 通用对话框中使用帮助系统11.3 Delphi帮助提示(Hint)的应用11.3.1 帮助提示的显示11.3.2 OnHint事件11.4 自定义部件的帮助的安装第十二章异常处理与程序调试12.1 Delphi异常处理机制与异常类12.1.1 运行时间库异常类(RTL Exception)12.1.2 对象异常类12.1.3 部件异常类12.1.4 小结12.2 异常保护12.2.1 需要保护的资源12.2.2 产生一个资源保护块12.3 异常响应12.3.1 使用异常实例12.3.2 提供缺省响应12.3.3 响应一族异常12.3.4 异常的重引发和处理嵌套12.3.5 自定义异常类的应用12.3.6 利用异常响应编程12.4 程序调试简介12.4.1 调试的准备和开始12.4.2 程序运行的控制12.4.3 断点的使用12.4.4 监视数据的值12.5 其它调试工具12.5.1 Turbo Debugger12.5.2 WinSight12.5.3 WinSpector12.6 使用Browser12.6.1 设置过滤器12.6.2 使用加速菜单12.6.3 查找按钮12.6.4 Detalls区的显示页12.6.5 使用Browser12.6.6 小结第二部分数据库篇第十三章Delphi开发数据库应用程序概述13.1 数据库系统概述13.1.1 数据库管理系统13.1.2 数据库应用程序13.2 Delphi的数据库特性及功能简介13.2.1 Delphi的数据库特性13.2.2 Delphi可以访问的数据源13.3 Delphi数据库的体系结构13.3.1 数据访问部件13.3.2 数据控制部件13.3.3 数据库窗体专家和数据库操作台(DBD)13.4 Delphi数据库应用程序的开发方法和步骤13.4.1 概述13.4.2 数据库应用程序的开发步骤13.4.3 交付数据库应用程序13.4.4 安装BDE13.4.5 安装SQL Links第十四章简单数据库应用的创建及MASTAPP介绍14.1 简单的单表数据库应用14.1.1 选择相关的部件14.1.2 设置部件的属性14.1.3 运行程序14.2 利用TDBNavigator部件创建存取程序14.2.1 创建应用程序窗体14.2.2 使用TDBNavigator部件移动记录指针14.2.3 定制TDBNavigator部件14.3 创建主要──明细数据库应用14.3.1 一对多关系的主要──明细型数据库应用程序14.3.2 一对多关系的数据库应用14.4 字段对象的使用14.4.1 字段对象的类型14.4.2 创建永久性的字段对象14.4.2 字段对象的属性设置14.4.4 字段对象的访问14.4.5 设定字段对象的显示格式14.4.6 自定义字段以及计算字段对象的创建14.5 查询数据库中的记录14.5.1 使用GotoKey方法查找数据记录14.5.2 使用FindKey方法查找数据库中的记录14.5.3 利用GotoNearest和FindNearest执行不精确查找14.6 修改数据库中的记录14.6.1 Edit和Post方法14.6.2 实现异常保护的try...finally语句14.7 插入和删除记录14.7.1 逐步插入方法14.7.2 调用InsertRecord插入记录14.8 输入数据的有效性验证第十五章数据访问部件的应用及编程15.1 Delphi数据访问部件的层次结构15.2 TSession部件及其应用15.2.1 TSession部件的重要属性及作用15.2.2 TSession部件的方法:15.2.3 TSession部件应用举例15.3 数据集部件TDataSet及其应用15.3.1 数据集部件的几种状态(或称模式)15.3.2 数据集的打开的关闭15.3.3 数据集的导航15.3.4 数据集中的数据维护15.3.5 数据集部件与数据浏览部件的连接15.3.6 数据集部件的事件15.4 TTable部件及应用15.4.1 TTable部件主要的属性15.4.2 TTable部件的方法及应用15.5 TDataSource部件及其应用15.5.1 TDataSource部件的属性15.5.2 TDataSource部件的事件15.6 字段部件和字段编辑器的使用15.6.1 字段部件15.6.2 字段编辑器的使用15.7 TReport部件及其应用15.8 应用举例——多个窗体显示同一个数据库表第十六章数据浏览部件的应用及编程16.1 数据浏览部件的基本特性16.2 使用TDBText部件显示表中的数据16.3 使用TDBEdit部件显示和编辑表中的数据16.4 用TDBGrid部件显示和编辑表中的数据16.4.1 TDBGrid部件的主要属性及应用16.4.2 TDBGrid部件的事件及应用16.5 TDBNavigator部件及其应用16.6 TDBMemo部件及其应用16.7 TDBImage部件及其应用16.8 数据浏览部件中的列表框和组合框16.8.1 TDBComboBox部件16.8.2 TDBListBox部件第十七章SQL编程17.1 SQL语言简介17.1.1 SQL的历史17.1.2 SQL的优点17.2 TQuery部件在SQL编程中的运用17.2.1 TQuery部件的使用17.2.2 在TQuery部件中编写简单的SQL查询命令17.3 SQL语言编程概述17.3.1 SQL命令文本的编写17.3.2 SQL程序的执行17.3.3 通过TQuery部件如何获得活动的数据17.4 动态SQL语句的编程17.4.1 使用Params属性为参数赋值17.4.2 使用ParamByName方法为参数赋值17.4.3 使用Datasource属性为参数赋值17.4.4 Prepare方法的使用17.5 SQL编程实例17.5.1 设计简单的SQL程序编辑器17.5.2 设计一个数据库查询器第三部分高级开发篇第十八章Delphi客户/服务器应用开发18.1 Delphi客户/服务器应用开发原理18.1.1 客户/服务器体系结构18.1.2 关系数据库体系结构与客户/服务器模式18.1.3 各种数据库服务器功能介绍18.1.4 IDAPI结构原理18.2 Delphi客户/服务器应用开发环境的构造18.2.1 Borland SQL Links 的安装18.2.2 配置SQL环境18.3 Delphi 客户/服务器编程18.3.1 使用TDatabase部件联接SQL服务器18.3.2 处理客户/服务器事务控制18.3.3 使用存储过程18.3.4 从开发平台到服务器的向上适化18.4 Delphi客户/服务器应用实例分析18.4.1 数据库环境介绍18.4.2 应用程序分析第十九章Delphi 自定义部件开发19.1 Delphi部件原理19.1.1 什么是部件19.1.2 编写部件的不同之处19.1.3 建立部件过程概略19.2 Delphi部件编程方法19.2.1 Delphi部件编程概述19.2.2 Delphi部件编程19.3 Delphi部件编程实例19.3.1 创建数据库相关的日历控制——TDBCalendar19.3.2 创建图形部件第二十章开发Delphi对象式数据管理功能20.1 流式对象的实现原理和应用20.1.1 TStream对象20.1.2 THandleStream对象20.1.3 TFileStream对象20.1.4 TCustormMemoryStream对象20.1.5 TMemoryStream对象20.1.6 TResourceStream对象20.1.7 TBlobStream对象20.2 读写对象的实现原理和应用20.2.1 TFiler对象20.2.2 TWriter对象20.2.3 TReader对象20.3 Delphi对象式数据管理应用实例20.3.1 Delphi动态DFM文件及部件的存取在超媒体系统中的应用20.3.2 数据库BLOB字段的应用20.3.3 存取嵌入在OleContainer对象中的OLE服务器的数据附录附录A 配置数据库引擎BDE(Borland DataBase Engine)一、数据库引擎(Borland Database Engine)的配置指南1、BDE配置工具概述2、存储配置信息二、配置Microsoft ODBC1、配置Miscrosoft ODBC(Open Database Connectivity)的步骤2、配置ODBC的配置文件3、配置ODBC的BDE配置文件4、ODBC的端口配置入口5 、关于AutoODBC三、BDE配置工具的参数1、数据库引擎配置工具的System页2、数据库引擎配置工具的Date页3、数据库引擎配置工具的Time页4、数据库配置工具的Number页5、数据库引擎配置工具的Driver页6、数据库引擎配置工具的Alias页附录B Report Smith应用概述一、关于报表Reports和Repert Smith 3.0二、Reprort Smith概述三、熟悉Report Smith四、新版本Report Smith的新特点附录C InterBase概述一、Local InterBase二、InterBase Server三、InterBase的特性简介四、InterBase的约束五、语法规则六、数据库对象命名规则七、文件命名规则八、文件说明1、.主文件说明2、次级文件说明附录D 数据库桌面介绍一、数据库桌面(DataBase Desktop)新特点:1、工具条增强功能2、菜单增强功能3、文件处理增强功能4、工具增强功能5、联机帮助的增强功能6、SQL增强功能二、关于数据库桌面对象1、Tables2、Temporary Tables3、Queries4、SQL文件三、数据库桌面对象的文件扩展名四、关于数据库桌面窗口1、查询窗口2、SQL编辑器3、表格窗口4、工具条5、状态条。
用DELPHI设计ASP动态页面
一
Dep i 执 行 F l Ne 出 现 Ne tms对 话 lh , i el w, wI e
框 后 ,新 建 Acie 页 E的 Aeie L b ay t X v t X v ir r
pr c d e Ta p e t O n a t g c ns A S o e ur s ts. StrPa e( o t .
c t g o t x : Un n wn) p j C n e t n I k o ;
begi n
a n n it n n u c a i :TADOQu r ; o e y
uni ai tm n;
W id 1 n【 ws和 AS 技 术 开 发 大 型 网 站 的 最 佳 P 技 术组合 。
既 然 有 这 么 多 的好 处 , 下 面 我 们 就 开 那
ห้องสมุดไป่ตู้
i er a nt f ce
诡蓐 知 与 】 舂 菝l
4 I
维普资讯
维普资讯
主 页教 室
网 络 与 置 信
,
魏 小 庆
AS 是 流 行 在 W i d ws系 统 中 的 动 态 P no 页 面 设 计 技 术 , 它 主 要 用 来 开 发 It  ̄ e / ne l t I ta e 应 用 。AS 之 所 以 流 行 , 要 是 因 为 n rn t P 主 始 实 际 设 计 吧 ! 在 下 例 中 , 们 将 完 成 一 个 我 用 户 身 份 的 检 测 , 这 是 We 网 站 中 一 个 常 b 见 的 应 用 , 户 的 姓 名 和 密 码 存 放 在 Ac e s 用 c s 数据库 “ 试 . d” “ 户 ” 中。 测 m b 的 用 表 第 一 步 进 行 应 用 逻 辑 设 计 。 首 先 启 动
第6章Delphi常用控件及基础编程
《Delphi数据库基础》
清华大学出版社 6.3 Win32控件及其编程应用 6.3.1顺序页控件(TabControl)
顺序页控件(TTabControl)是一个应用相当广泛的 windows控件,TTabControl控件能够为窗体添加标签供用户使 用,比较适合于外观不变而内容变化的情况。 组合框控件,“Win32”页上。
清华大学出版社 6.6.6复选框控件(CheckBox)
复选框按钮用于多选的情况,我们可以从一组复选框中选 择多个选项,而不象选项按钮那样只能选择一个。在实际的 windows程序中大量的接触到复选框控件。 复选框钮控件【CheckBox】 ,在“standard”页上。
6.6.7列表框控件(ListBox)
6.2.5分割条控件(Splitter)
Splitter控件为分割条控件,可以把窗体分隔成几个部门, 拖动Tsplitter可以改变各个部分的大小。 Splitter控件 ,在“Aditional”页上。 TSplitter控件的属性主要用于设置界面的显示效果,实现 界面各部分大小的动态调整。
《Delphi数据库基础》
《Delphi数据库基础》
清华大学出版社
6.3.7修饰条控件(TCoolBar)
修饰条控件(TCoolBar)又称为“酷条”也是工具条的一 种,用于位置可移动、大小可调节的控制。TCoolBar对象包含 的子控制放置TCoolBar对象的段上,每个段都是TCoolBand对 象。TTCoolBand和TTCoolBar之间的关系就和TtoolButton和 TtoolBar的关系一样。 修饰条控件 ,在“Win32”页上。
6.3.5日期时间控件(DateTimePicker)
DateTimePicker控件可以实现日期和时间的快速输入,并 且可以保证输入的规范性。在此我们推荐读者在程序设计时 与日期相关的输入使用DateTimePicker控件。 DateTimePicker在“Win32”页上, 《Delphi数据库基础》
delphiidftpidhttp多线程多进度条
delphiidftpidhttp多线程多进度条idftp 上传多个⽂件同时上传,⽀持断点续传,多进度条。
起初⽤API做,发现对API了解太少,便改⽤线程类来处理,代码如下TThread1 = class(TThread)privatefCount, tstart, tlast: integer;tURL, tFile, temFileName,temLocalFile: string;tResume: Boolean;tStream: TFileStream;temFtp: TIdFTP;sFileName: string;pb: TProgressBar;bstate:Integer; //1,表⽰准备上传,2表⽰正在上传,3表⽰上传完成,4表⽰上传失败protectedprocedure Execute; override;publicconstructor create1(aURL, aFile, fileName,localfile: string; bResume: Boolean; Count,start, last: integer);procedure DownLodeFile(); //上传⽂件// function SetProgressInListView(lvw: TListView): Boolean; //在listview中动态创建进度条procedure StateChange; //上传状态改变procedure FtpUp;end;创建线程之前把进度条动态创建好,给进度条的Tag属性赋个唯⼀值,for i:=0 to iCount-1 dobeginSetProgressInListView(ListView1,i,1,10,3); // 创建进度条localfile:=ListView1.Items.Item[i].Caption;MyThread[i+1] := TThread1.create1('', '', '',localfile, false,i,2,1);end;constructor TThread1.create1(aURL, aFile, fileName,localfile: string; bResume: Boolean;Count, start, last: integer);vari:Integer;begininherited create(true); //设置为true 主要是为了调⽤resume 即创建线程时先不执⾏,调⽤thread1.resume执⾏线程。
「静态页面和动态页面」
4.2 静态页面和动态页面4.2.1 静态页面在互联网发展的开始阶段,人们通过浏览器浏览的页面一般都是HTML静态页面,也即Web页面只包括单纯的HTML标记文本内容,浏览器也只能显示呆板的文字或图像等信息。
用户使用客户机端的Web浏览器,访问Internet上各个Web站点,在每一个站点上都有一个主页(Home Page)作为进入某个Web站点的入口。
每一Web页中都可以含有信息及超文本链接,超文本链接可以让用户链接到另一Web站点或是其他的Web页。
从服务器端来看,每一个Web站点由一台主机、Web服务器及许多Web页所组成,以一个主页为首,其他的Web页为支点,形成一个树状的结构,每一个Web页都是以HTML的格式编写的。
Web服务器使用HTTP超文本传输协议,将HTML文档从Web服务器传输到用户的Web 浏览器上,就可以在用户的屏幕上显示出特定设计风格的Web页。
但很快,这种静态页面满足不了用户的浏览需求。
用户除了浏览相关信息外,还需要在浏览器浏览的页面中进行交互操作,以便让浏览器能处理用户的请求。
在这种需求下,1995年后的浏览器发展成为支持Web页中加入Javascript 或Vbscript脚本代码的网页,以便创建内容和表现力更加丰富的HTML页面,可以让用户实现浏览器中的动态交互操作。
但此时的网页仍然是静态网页,它不需要Web服务器做任何工作,Web服务器将网页传送到客户端后,由浏览器解释执行带有脚本语言的网页。
但这种静态网页已经让用户感觉到网页的多姿多彩,已具有某种程度上的动态特性,而这种动态特性是基于客户端浏览器的。
随着互联网技术的不断发展以及网上信息呈几何级数的增加,人们逐渐发现手工编写包含所有信息和内容的页面对人力和物力都是一种极大的浪费,而且几乎变得难以实现。
此外,采用静态页面方式建立起来的站点只能简单地根据用户的请求传送现有页面,而无法实现各种动态的交互功能。
具体来说,静态页面在以下几个方面都存在明显的不足:(1)无法支持后台数据库。
delphi twebbrowser的navigate方法
delphi twebbrowser的navigate方法Delphi TWebBrowser的Navigate方法简介在Delphi中,TWebBrowser控件提供了浏览网页的功能。
其中,Navigate方法是最常用的方法之一,用于导航到指定的网页。
方法参数Navigate方法的参数有如下几种:1.URL:指定要导航的网页地址,可以是完整的URL,也可以是相对路径。
2.Flags:指定如何打开网页,包括以下常用选项:–navNoHistory:不将导航记录添加到浏览器历史记录。
–navBrowserBar:如果导航失败,则尝试将URL传递给浏览器工具栏进行处理。
–navHyperlink:将URL视为一个超链接,而不是一个普通网页地址。
3.TargetFrameName:指定在哪个框架中显示网页内容,默认为”_self”,表示在当前框架中显示。
导航的常见用法以下是使用Navigate方法进行网页导航的几种常见用法:•导航到指定的URL:('•导航到相对路径的网页:('subfolder/');•导航到一个超链接:('mailto:', navHyperlink);导航的注意事项在使用Navigate方法导航网页时,需要注意以下几点:1.确保WebBrowser控件已经正确地创建和配置。
2.在导航前,可以通过检查WebBrowser控件的ReadyState属性来判断是否已经加载完毕。
3.可以通过WebBrowser控件的OnBeforeNavigate2事件来取消导航或修改导航的参数。
结论Delphi中的TWebBrowser控件的Navigate方法是一个非常方便和强大的功能,能够轻松实现网页导航的操作。
通过灵活运用其参数,开发者可以根据实际需求进行网页导航的控制和定制。
深入了解Navigate方法的更多功能导航到指定的URL使用Navigate方法最常见的用法就是导航到指定的URL,这个URL可以是完整的网页地址,比如”导航的常见选项Navigate方法的第二个参数Flags可以指定如何打开网页。
delphi
从使用ADO德尔菲基本的数据库开发(与德尔福)许多德尔福初学者开始项目如“我的记事本”什么时候开始编程与德尔福,其他开发者花在写各种各样的日与夜多媒体技术和图形应用程序,但是所有的人迟早会意识到这一切现在90%的软件与一些数据存储在某些方式。
那是毫无疑问的,德尔福已功能强大、可靠的数据管理能力。
应用程序开发建设新一代的商业软件被吸引到德尔福原因有几个。
我们能创造软件用希腊古都几乎所有类型的运作与桌面的数据库像悖论,dBase或女士访问。
我们也可以利用德尔菲法建立客户端-服务器开发解决方案。
用Delphi数据访问…只是几句话德尔福船只与超过40家的预制组件和提供了一种直观的数据库编程环境,包括一个完整的代码编辑器、数据库形式,加快法师步骤来创建一个浏览数据表和数据模块设计工具,可以用来共享数据访问在多种形式。
其他几个数据库特殊工具也具备了德尔菲法来帮助我们代码生成更快、更容易。
的数据访问页的组件提供部件的使用调色板连接到一个数据源。
页面数据控制、数据清楚部件那些(后连接到一个数据库Delphi)可以被用来retreive传送数据从一个数据库。
这个组分对使用ADO数据对象页面ActiveX控件(ADO)进入信息通过OLEDB数据库。
这个组分对网页访问数据库包括包括直接。
不要逃跑数据库编程,当然不是微不足道。
在这个课程中,我们将尽量拉近的一些技巧,问题、解决数据库编程用Delphi随着所有秘密它藏起离我们也有多远。
在我们继续使用各项数据部件/工具在Delphi我们应该首先看到的一些概念数据库设计,试图营造出一个简单的数据库。
在我们开始前互动数据库应用德尔菲法则,它是一个好主意,感受到现代数据库是什么。
当你想一个单词数据库你应该这样做通常认为任何类型的数据存储在一个电脑,甚至是SomeFile.pas文件(代码来一些Delphi单位)是一种数据库。
另一种类型的数据库一个词或一个简单的文件。
ini文件。
存取。
delphi中TWebBrowser的常见属性、方法和使用技巧
delphi中TWebBrowser的常见属性、方法和使用技巧一、常见属性、方法GoBack:方法,后退到上一个页面。
GoForward:方法,前进到下一个页面。
GoHome:方法,调用默认的主页页面,该页面在IE的选项中设定。
GoSearch:方法,调用默认的搜索页面,该页面在IE的选项中设定。
Refresh:方法,刷新当前页面。
Stop:方法,停止调用或打开当前页面。
LocationName:属性(WideString),当前位置的名称。
LocationURL:属性(WideString),当前位置的URL。
Busy: 属性(Boolean),是否正忙。
Visible: 属性(Boolean),浏览器窗口是否可见。
(以下属性为在TWebBrowser新增,TWebBrowser_V1中没有,其作用有待探索)StatusBar: 属性(Boolean),是否显示状态栏。
StatusText: 属性(WideString),状态栏内容。
ToolBar: 属性(SYSINT),工具栏中的内容。
MenuBar: 属性(Boolean),是否显示菜单条。
FullScreen: 属性(Boolean),是否全屏显示。
Offline: 属性(Boolean),是否脱机浏览。
AddressBar: 属性(Boolean),是否显示地址栏。
Navigate(const URL: WideString;var Flags, TargetFrameName, PostData, Headers: OleVariant):方法,调用指定页面具体参数如下:URL:指定页面的URL。
Flags:Word类型,作用还不清楚,可设为0。
TargetFrameName:WideString打开页面所在的Frame,为空字符串时在当前的Frame中打开;TargetFrameName指定的Frame存在时在Frame中打开;TargetFrameName 指定的Frame不存在时则新建一个窗口打开,此时就相当于调用外部的IE浏览器了。
cef4delphi 常用方法
cef4delphi 常用方法## English Answer:### Overview of Cef4Delphi Common Methods.Cef4Delphi is a powerful framework that enables Delphi developers to integrate Chromium-based web content into their applications with ease. The framework offers a wide range of methods that facilitate the creation of sophisticated web browsing experiences. Here's an overview of some of the most commonly used methods:CreateBrowser: This method creates a new Chromium-based browser object. It accepts a variety of parameters that allow you to customize the browser's behavior, such as its size, position, and initial URL.LoadURL: This method loads a specified URL into the browser. It can be used to navigate to websites, display local HTML files, or even load data from a string.ExecuteJavaScript: This method allows you to execute JavaScript code within the browser. It's a powerful toolfor interacting with web content, such as manipulating the DOM, making API calls, or even automating tasks.GetFrame: This method returns a reference to a specific frame within the browser. It can be used to access the main frame or any of the nested frames, allowing you to manipulate the content of each frame independently.GetSource: This method returns the HTML source code of the current page displayed in the browser. It can be useful for analyzing the page's structure, extracting data, or performing other tasks.GetText: This method retrieves the text content of the current page. It can be used to extract the plain text from a web page, making it easy to process or display in other parts of your application.Print: This method prints the current page to thedefault printer. It allows you to easily create hard copies of web pages or specific sections of them.Reload: This method reloads the current page. It'suseful for refreshing the content after changes have been made on the server or for restarting the page in case of errors.Stop: This method stops the loading of the current page. It can be used to interrupt the loading process if it's taking too long or if you want to prevent the page from loading altogether.These are just a few of the many methods available in Cef4Delphi. By mastering these methods, you'll be able to harness the full potential of the framework and create innovative and engaging web browsing experiences in your Delphi applications.## 中文回答:Cef4Delphi 常用方法概述。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
var
Pi : Pointer;
begin
Pi := Notebook1.Pages.Object[];
Memo.Parent := Pi;
end;
这样就可在TPage上动态创建编辑部件了。
往Notebook1中动态生成页面时,页面应所相应的切换,TDynaPage. Notebook1.Tabset1有关的属性要作相应的调整。
定义了TDynaPage后,只需在Open,Close菜单项中加入如下代码,即可方便的在用户打开关闭文件时创建成删除页面。
procedure TEditForm.Close1Click(Sender: TObject);
begin
if DynaPage.CurPage<>0 then
TNotebook部件创建后至少有一个页面,因此Pages属性不是空值,只要往Pages中加入字符串,Delphi自动地把该字符串与TPage类对象相联系。TPage类是TCustomEdit派生出来的,在对象浏览器(Object Browse)中可观察到TPage的数据成员和方法。静态生成的页面也是 TPage类。
TabSet1.Tabs:=Notebook1.Pages;
end
else
begin
DynaPage.DynaAdd( Notebook1, ExtractFileName(OpenDialog1.FileName));
Open(OpenDialog1.Filename);
end;
procedure DynaMemo(Pi:Pointer);
var
Memo:TMemo;
begin
Memo:=TMemo.Create(Pi);
Memo.Parent:=Pi;
Memo.Align:=alClient;
Memo.borderStyle:=bsNone;
为了实现以上功能,程序中使用了动态页面类(TDynaPage),其定义如下:
type TDynaPage = Class(TObject);
该类可根据需要动态的产生页面, 每个页面上创建了可进行文本编辑的TMeno部件。
procedurage.Del(Notebook1,DynaPage.CurPage);
if Notebook1.Pages.count = 1 then
Close1.Enabled:=False;
end;
procedure TEditForm.Open1Click(Sender: TObject);
CurPage : integer;
FileList : TSringList;
end;
CurPage表示当前用户选择的页面数,用户切换、增加、删除页面均影响CurPage 的值,CurPage初如化为零页。FileList存放打开或创建文件的名字以及与这些文件相关的编辑部件TMemo,页面动态创建、删除将影响FilstList的值。
4.2 多页面界面
多页面界面是一种非常友好的界面形式。它由一个窗体和多个页面组成, 关于每个页面的信息列在窗体底部的标签(Tabs)上,用户可通过选择标签来进行页面切换。 每次只有一个页面显示在窗体中。MPI较MDI使用更为方便,且切换速度更快。本章例程就是多页面界面的例子。另外Delphi集成开发环境中的代码编辑(Code Editor)窗体是MPI应用在文本编辑中的实例。在MPI中,一个窗体内的多个文件可以方便地进行切换和交换数据。
EditForm.TabSet1.Tabs.delete(No);
Filelist.Delete(No);
DynaPage.CurPage:=EditForm.TabSet1.TabIndex;
Sender.PageIndex := EditForm.Tabset1.TabIndex;
TabSet1.Tabs := Notebook1.Page;
另外,在TabSet的OnClick事件中定义下如下代码,可使用户在选择标签时开打相应的页。
procedure TEditForm.TabSetClick(Sender : TObject);…
begin
begin
if OpenDialog1.Execute then
begin
if not(OpenFile or NewFile) then
begin
OpenFile:=true;
Open(OpenDialog1.FileName);
Notebook1.Pages.Strings[0]:=ExtractFileName( OpenDialog1.FileName);
Pi:=FileList.Objects[DynaPage.CurPage];
Memo1:=Pi;
EditForm.Caption:=Sender.Pages.Strings[DynaPage.CurPage];
end;
当用户在多个页面中进行切换时,程序应当保证对当前页面进行编辑。 例如在多页编辑器中,用户选中某一页面,即可对该页面中的文件进行编辑、寻找、设置、打印等。为了实现这一功能,定义了一个TMemo类型的变量:Memo1,该变量没有实例化,每次调用DynaAdd,DynaDel方法均定把TabIndex指定页面的Memo指针传给Memo1。这样在程序运行中,始终有一个实例化的Memo指针赋给Memo1,而菜单中的文本编辑功能均对Memo1进行操作。这种指针传递就能保证对当前页进行操作。
Notebook1.PageIndex := TabSet1.TabIndex;
…
end;
设计静态MPI时,可在部件窗体(Component Palette)的WIN3。1页面中选中TNotebook 部件,然后在Object inspector窗体中双击TNotebook的Pages属性,Dephi 将弹出对话框,用户可以在此确定Notebook的页数和字符串列表,如图4.6。关闭对话框后, 可对每一页进行设计,使用鼠标右按钮弹出快速菜单进行页面切换。
EditForm.Tabset1.TabIndex:=Sender.Pages.Count-1;
EditForm.Notebook1.PageIndex := EditForm.Tabset1.TabIndex;
DynaPage.CurPage:= Sender.Pages.Count-1;
if Notebook1.Pages.count > 1 then
Close1.Enabled:=True;
end;
end;
end;
4.2.1 静态多页面界面
TNotebook,TTabSet可用来开发静态多页面界面。TNotebook部件能显示多页, 每页都有相应的控制。通常TNotebook与TTabset配合进行控制。TTabset 有一组水平的标签,每个标签可通过创建字符串列表进行某种控制。
MPIEDit例程中的主窗体中有一个TNotebook 部件和 TTabSet 部件。 把两个部件的Aglin属性设置成bsTop和bsBotton,使它们分别处在窗体的上下两部分。为了使TTabSet与TNotebook配合工作,使用下代码:
TDynaPage的DynaAdd方法定义如下:
procedure TDynaPage.DynaAdd(Sender:TNotebook;FileName:String);
var
Pi:Pointer;
Memo:TMemo;
begin
Sender.Pages.add(FileName);
要创建多页面编辑器,必须从TPage的父件(Parent属件)创建相应编辑部件。但在动态创建页面时,TPage只是一个与字符串相联系的TObject类,不能写成:
MemoParent := Notebook1.Pages.Object[ ];
在Delphi中,宣称对象和创建对象都是用指针来标识, 因此可用无类型指针进行指针传递。
Memo.HideSelection:=False;
Memo1:=Memo;
end;
procedure TDynaPage.Del(Sender:TNotebook;No:integer);
var
Pi:pointer;
begin
Sender.Pages.delete(No);
多页面界面分为静态MPI和动态MPI两种形式。静态MPI的标签数量固定,用户在事先设计好的多个页面上进行切换。象选择对话框(Option Dialog)就属于静MPI。动态MPI的标签数量不固定,由程序根据需要动态的产生或消除,象代码编辑窗体就是动态MPI,程序可根据用户的需要产生多个文本页面,也可以动态地关闭页面。利用Delphi的TNotebook和Ttabset 可十分方便地设计静态MPI。设计动态MPI则需要编写专门的代码。
4.2.2 动态多页面界面
使用Delphi进行静态MPI设计非常简单,进行动态MPI设计则需编写专门的代码。 对
于一个多页面文本编辑器,应能实现以下功能:
● 动态生成页面,每个页面均能进行文本编辑
● 动态关闭页面,直到窗体中只有一个页面为止
● 页面切换不影响各种文本编辑操作
Pi:= Sender.Pages.Objects[Sender.Pages.Count-1];
DynaMemo(pi);
DynaPage.FileList.addObject(FileName,Memo1);
EditForm.TabSet1.Tabs := Sender.Pages;