delphi的精美界面设计_第1页
delphi的精美界面设计_第2页
delphi的精美界面设计_第3页
delphi的精美界面设计_第4页
delphi的精美界面设计_第5页
已阅读5页,还剩79页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、前言:界面的美观和用户亲和性是应用软件成功的首要条件, 因此界面往往是程序员 最费心的地方。在这个专辑中,将向读者全面介绍 Delphi 中界面设计的原则和技巧 点儿小小的内容, 即可给程序的显示添加不少色彩LED 数码管仿真显示程序在电子设备上广泛地使用 LED 数码管显示数据,在许多应用软件中也经常模拟 LED 数 码管显示数据,使程序画面看起来很有特色菜单设计DELPHI 中自适应表单的实现我们知道,屏幕分辨率的设置影响着表单布局,假设你的机器上屏幕分辨率是 800*600,而 机器上势 必会走样 间和输入法图标的地方)在的控制菜单,而在正常的任务栏 (即屏幕最下方的 “开始”按钮的右

2、边的各式各样)中却不出现按钮的程序, 即我们常说的在后台运行的程序所谓动态菜单是指菜单项随着程序的操作变化而变化。现在,我们用 Delphi 来实现这一 功能,具体步骤如下工具栏和状态条windows最大化按钮, 最小化按钮和关闭按钮。你想不想在 Windows 的窗口标题栏上添加一个新的自定义按钮 有类似的风格,Win98 的出现,使这种风格的工具栏得到了推广ows其他技巧在 Delphi 开发环境中,文字的输出效果一般都是头上脚下的正统字符,如何输出带有一 定倾斜角度的文字以达到特殊的显示效果呢Delphi三十六计之界面篇 代码当用户在资源管理器中调用右键菜单时,会显示一个属性菜单项, 点

3、击属性菜单项会显示一个属性页,用户可以获得甚至修改文件信息 WSSYSMENU有左上角的至於不能移动.缩小/放大, 可以自已拦下 WM_NCHITTEST, 然後一概回应滑鼠点在视窗 Client 区域, 相信这个视窗就呆呆的不会动了.详情可以查一下 Win32API Help 的 CreateWindow() 与 WM_NCHITTEST 的说明. $R *.DFM 由于工程本身创建程序的主窗口,且启动溅射屏幕必须在创建主窗口之前出现,所以工程 文件必须创建自己的启动屏幕。这意味着用户必须修改源代码来创建工程文件 ,而这通常在 DELPHI 编程中是不需要的。下面的过程介绍了溅射屏幕的建立过

4、程。 m ion SplashForm插入任何按钮或者其他相互作用的 控件。应用程序本身显示和去除启动溅射对话框。 m 创建的窗体列表中。高亮显示每个窗体并单击鼠标右按钮来将其移动到 Available 窗体。所 有的 Delphi 窗体在运行时都是在内存中自动创建的,这要消耗内存和系统资源。在这样的一 10、接下来,修改工程的源代码, 以便在显示主窗口之前显示溅射对话框。这里需要在工程文 maininmainpasMainForm,shinsplashpasSplashForm$R *.RES11、如果这时编译和运行程序,它就非常快速地显示和去除启动溅射对话框, 以至用户可 ickCount

5、 钟。程序清单如下:$R *.DFMoLED 数码管仿真显示程序在电子设备上广泛地使用 LED 数码管显示数据,在许多应用软件中也经常模拟 LED 数 码管显示数据,使程序画面看起来很有特色。使用 Delphi 程序实现 LED 数码管的仿真显示 非常容易,具体步骤如下: 位图的底色为紫红色 ,前景色为红 色。在位图上选择适当宽度的线条画出一个正方的 8 字,并将方型 8 字的各个拐角处用斜线 bitmapbmp文件复 t 中位图的序号与位图本身代表的数字相同,并注意将位图设定为不透明。 $R *.DFM限制显示位数小于 6 位lI分离数字位I0;I:=I+1;显示数字 显示初值 0,在窗口本

6、身被覆盖后又恢复到前台时仍可显示正常的数值。至此已 完成了显示函数的程序编制。在需要显示数字的程序中调用 display_LED 函数就能将数字 用鼠标双击按钮元件跳转到 Click 事件编辑窗口,输入如下语句: DELPHI 中自适应表单的实现我们知道,屏幕分辨率的设置影响着表单布局,假设你的机器上屏幕分辨率是 800*600,而 机器上势 必会走样。这时你一定希望表单能自己适应不同的分辨率,下面就有两种方法可供你参考。一、根据新的分辨率自动重画表单及控件Interface义两个常量,表示设计时的屏幕的宽度和高度(以像素为 longint 辨率, 但美中不足的是它并不改变控件的顶点坐标位置,

7、也就是说,该过程不改变控件之间的 相对位置关系。要想调整控件之间的选队相对位置,还需要自己编程实现,有兴趣的读者可试 二、将机器分辨率更改为设计时的分辨率这种方法不改变表单本身,而是将屏幕分辨率更改为与表单设计时用到的分辨率相同。 显示模式信息,后者则更改显示设置,具体参数的含义请参见 DELPHI 帮助。设计时宽度常量 和高度常量的定义如方法一。 间和输入法图标的地方)在的控制菜单,而在正常的任务栏 (即屏幕最下方的 “开始”按钮的右 边的各式各样)中却不出现按钮的程序, 即我们常说的在后台运行的程序。如果自己的程序中 也能有这样的话,那种与众不同的感觉真棒.预备知识:1:向系统托盘中加入图

8、标控制菜单:向系统托盘中加入图标控制菜单须用到函数 Shell_NotifyIconA,而这个函数又有两个参 数 :TnotifyIconDataA 结 构 的 参 数 和 一 个 消 息 参 数 标 ;NIM_DELETE:删除一个已有的图标 ;cbSize:DWORD; 表示该结构的长度 e SSAGENIFICONNIFTIP uCallbackMessageUNIT标事件如右击等等时系统向Wnd 参数所指定 IconHICON盘中的图标的句柄即 handle 例如你可用这是我的第一个托盘图标菜单在一般情况下我们在打开一个窗口或是一个程序时都会在任务条上出现按钮如在 IE 中 每打开一个

9、新的窗口在任务条上就有一个新的按钮 ,在这里我们的程序是用在系统托盘中图 标控制菜单 , 程序在后台运行 , 即希望我们的程序不在任务条上出现按钮 ;这个可用函数 form1.Height:=1; 让窗口在运行时表现为一个像素长宽的点 任务栏上出现按钮3:在程序中控制光驱的打开和关闭;当我们不再用手动的打开关闭光驱门时,我们的光驱寿命也就会相应延长,我们在程序中 可用函数 lpstrReturnString表示接收返回信息的缓冲区指针 , 如果不需要返回值这里可写为 nil,参数 写为handle;在我们的程序中原代码如下:打开光驱门:关闭关驱门:4:在程序中控制重启电脑和关闭计算机;退出 W

10、INDOWS 可用的函数有 ExitWindows() 重启:关闭计算机:5 :实现光驱的自动播放和更改光驱图标都需要更改注册表 ;要实现注册表的读写我们 用以下代码:例如有册表的子键关于注册表的相关知识大家可参考 电脑爱好者出版的注册表完全精通一还有一点应特别注意的是在更改光驱图标时不仅要在注册表中更改,还要把 加入声音等等大家一定都会,这里也就不再多说.所谓动态菜单是指菜单项随着程序的操作变化而变化。现在,我们用 Delphi 来实现这一 功能,具体步骤如下:Windows册 或者是来自一个子目录,主要由程序的功能而定。 这里假设主窗口名 ng OnClick()事件,例如,动态菜单标题来

11、 此,对菜单所在的主窗口模块的单元程序的数,据我们需要定义 Type 后添加一个自定义的事 然后,需要编写如下 MyClick()事件的具体内容: 3.编写程序将动态菜单标题添加到指定的菜单顶下,并将其与 OnClick()事件联系起来。 态生成:for i:=0 to N do /N 等于要添加的动态菜单数目,需事先定义为数值型变量,并赋值 windows最大化按钮, 最小化按钮和关闭按钮。你想不想在 Windows 的窗口标题栏上添加一个新的自定义按钮,满 足你的个性化需求,从而也使自己的窗口更具特色呢?!一、实现起来要定义以下过程: delphi 函数 Bounds 定义一个矩形,这个矩

12、形就是新按钮的位置;再定义一个小的矩形,这个矩 2、每次我们对窗口进行操作,例如,最大化操作或最小化操作,新按钮就会消失, 为了解决 这个问题,我们对所有的消息要进行处理,给每个消息编写一个过程对按钮进行重画。 STWM_NCLBUTTONDOWN。二、具体的源程序如下:我们结合源程序来讲述过程的实现 , 从中可以看出程序对 win32 函数的调用 , 以及 WM_NCLBUTTONDOWN;$R *.DFMn leCaptionBtnfile:/得到窗口的句柄file:/定义画布的字体、画笔、刷子等属性try file:/在画布上画出定义的按钮file:/在新按钮上画出一个小矩形file:/

13、在上面画出的小矩形上填写一个字符w 字符finallyfile:/容错处理,如果出现异常,把句柄释放掉/WMNCPaint 过程的具体实现,该过程在绘制窗口时被调用 为激活状态或非激活状态时被调用nt file:/ WMNCHitTest过程与WMNCPaint过程实现方法相同,该过程在光标移动或鼠标按钮 被按下或鼠标按钮被释放时调用 按钮的标识值 区范围内鼠标左键被按下时调用该过程file:/判断被点击的是否是新按钮 ,如果是显示上面的信息 ,在这里你可以按你的需要 编写程序代码file:/如果窗口大小改变则重画标题栏三、程序执行结果通过以上的示例过程 ,相信你能根据自己的具体要求 ,利用

14、Delphi 设计出别具特色的 有类似的风格,Win98 的出现,使这种风格的工具栏得到了推广。其实,用 Delphi4 很容易实现 n 风格的工具栏。下面以一个 FORM 中的工具栏为例,详细介绍设计步骤: Win32 页中选择 Imagelist 元件, 为 FORM1 设计主菜单 ,主菜单的设计方法同 按F9 运行程序,便可发现,设计出的工具栏已经具有Word97的风格,用鼠标在各个按钮上 ows一、引言在 Delphi 开发环境中,文字的输出效果一般都是头上脚下的正统字符,如何输出带有一 定倾斜角度的文字以达到特殊的显示效果呢?笔者在制作公章辅助设计软件过程中 ,通过 Windows

15、图形设备接口函数实现了文字呈辐射状分布的功能。ndows 种图形对象,但并非简单的几何方式绘制, 因为文本的输出涉及到字体。 体。其中,True Type 字体的主要优点之一是可被任意放大或旋转,在任何尺寸上,都可以达到 印机上使用相同的字体。 Windows 为应用程 序之所以能够提供设备无关性是通过采用让应用程序创建逻辑对象从而使用物理对象的方 法实现的, 同样,对于字体的使用也是一样的:应用程序在使用字体时,首先创建逻辑字体, 以便 Windows 从设备中选择一种与之匹配的物理字体,从而达到较为准确的输出效果。WindowsGDI效果的基本步骤如下:1.取得设备描述表或图形设备的句柄:

16、2.创建逻辑字体并设置文字的倾斜度: 3.将逻辑字体选入设备列表,从而,Windows 选择与之匹配的物理字体,并且新的字体取代注:在此之前现4.使用当前设备的字体进行文字输出: 5.释放不再使用的图形对象(这里为逻辑字体):6.释放设备描述表或图形设备的句柄, 函数声明如下:二、程序实现legFontlfItalicfilefile:/创建逻辑字体file:/取得窗口的设备句柄file:/取出窗口设备的当前字体,并替换为新字体file:/设置设备窗口的文字色彩file:/输出文字file:/恢复原有的字体file:/删除逻辑字体file:/释放设备接口以上代码若不写在窗体的 Paint 事件

17、,则当窗体接收到重绘消息时,默认的窗口绘制过程将重 新绘制窗口而使倾斜文字消失。三、结束语以上,只是 Windows GDI 接口函数使用的一个具体例子,希望能对广大读者起到抛砖引 Delphi三十六计之界面篇I/申明BitBlt(Dc, 2给窗体添加皮肤.在实现部分书写代码如下:dx := x + iBMWid;窗体/例:画圆角矩形窗口4用渐变色填充窗体vt /在实现部分写如下代码:Ht: Word ;vt /在实现部分写如下代码:态栏 代码:Label(示范如何使控件具有鼠标进入与退出事件) /新建单元,创建以下类. /各事件代码当用户在资源管理器中调用右键菜单时,会显示一个属性菜单项,

18、点击属性菜单项会显 如下图所示,本文实现了一个显示 wave(波形)文件的信息如声道数等信息的属性页扩展。属性页扩展通常是同某类文件相关联的来实现同之相关的操作和信息显示 ,另外可以同 驱动器相关联,我们还可以用属性页扩展来替换控制面板程序的属性页。象其他外壳扩展程 建立同文件关联的属性页扩展首先,我们用命令File|New.,创建一个ActiveX Library,然后新建一个COM Object,实现的 y tryadStringadString finallytryRootKey:=HKEY_LOCAL_MACHINE; rueWriteString(ClassID, Wave File

19、 Property Sheet);finallyIShellExtInit.Initialize 时, 它传递一个数据对象包含来文件对应的目录的 PIDL 标识符。Initialize方法需要从数据对象中提取文件名,并把文件名和PIDL 标识符保存起来为了以后使 Exit;ltymedTYMED_HGLOBAL;Exit;/如果只有一个文件被选中,获得文件名并保存。 是一个用户自定义的值,这里我们用它来返回给回调函数对象。把扩展的对象引用记数变量付值给 pcRefParent 成员,这可以防止页面还在显示时,扩展 tryK /标题名psppszTitle/设定回调函数/设定对象引用记数变量lp

20、hie.message:=添加页面+e.message;messagebox(0, pchar(e.message), 错误, mb_ok);n 数处理属性页的消息 , 主要要响应 WM_INITDIALOG 消息来初始化页面显示信息 , 响应 WMCOMMANDWMNOTIFY消息来处理页面切换或关闭后处 try/保存对象信息/设置界面显示波文件信息 E /页面失去焦点PSN_KILLACTIVE:e.message:=回调处理+e.message;messagebox(0, pchar(e.message), 错误, mb_ok);建立同驱动器相关联的属性页扩展用同上面讲的有两点不同: E

21、建立控制面板属性页扩展同上面讲的有两点不同: 注册方式:子键可以在不同位置创建,这依赖于扩展是针对用户还是针对机器的。对用户 i类 别:Delphi & IDE 注册表就可以了(看完本文后,你会发现就是这么简单)。我们为 Delphi 换肤主要要做两件事(如果有其他要求,可参照之),一是将元件选项板多行 i 第一件事是元件选项板的多行显示,Delphi 的标准元件在元件选项板上有二三十页 ,还有 数十页的第三方控件,但Delphi的标准界面的元件选项板是单行显示的,有时用起来很不方便, 如果能多行显示该多好,请跟我来: 定义一个全局变量:MyIDE1;IDE以上四个函数及过程的实现部份如下:

22、tLinetheneOnResize该事件,元件选项板将不能显示出 下面对以上的代码略加解释: MultiLine 属性,如果 MultiLine 为 True 就将其 OnResize 事件赋与自定义的过程,否则清除 然后改自已和父控件的约束度高度。第二件事是给 IDE 添加图片,这部份就复杂多了, 限于篇幅,这里只作简单介绍,笔者主页上有 如果是主菜单或弹出菜单就将其OwnerDraw 属性设成True;然后用递归的方法设置其各子菜 单的 OnDrawItem 事件,并在该事件中自已绘制菜单项,这样你就可以随心所欲地自已作出自 E随着 Windows95 的流行,分隔器控件已成为操作系统的

23、常用部件,它将容器(通常为窗体 或面板 ) 的客户区域分为可调整 大小的若干部分 , 称为窗 格。我们最常见到 的例子就是 Windows95 的资源管理器,它使用了一个分隔器控件(也就是在资源管理器中可以用鼠标左右 视图分隔开,可以由用户任意调整。 Delphi 提供了一个分 隔器控件 TSplitter 来实现这种功能,下面以制作一个简单的资源管理器为例来介绍设计步骤: ctoryListBoxPanel 现在,按 F9 运行程序,便会出现一个简单的资源管理器,设计出的窗体具有随意调整窗格 大小的能力。在 Delphi 中实现容器分隔非常简单,甚至一句程序代码也不用写。要注意的是, (江苏

24、 韩世伟)Delphi 之快速设计(界面篇)i 本人打算从两个方面来谈论这个话题:界面设计及程序设计.本文介绍界面的快速设计:如果你的手在键盘上,我想你不太会愿意再去伸手拿鼠标来移动组件吧 ,再说鼠标也不太 精确(下面提到的均针对键盘操作, 能用鼠标操作完成的不在此列),那好, 以下快捷键及一些技 巧请各位看官收好. 一、以下快捷键指的是对窗体表格上组件的操作:【Ctrl+UP】向上移动当前组件(精确);【Ctrl+Left】向左移动当前组件(精确);【Ctrl+Down】向下移动当前组件(精确);【Ctrl+Right】向右移动当前组件(精确);【Shift+UP】减小当前组件的高度;【Sh

25、ift+Left】减小当前组件的宽度;【Shift+Down】增加当前组件的高度;【Shift+Right】增加当前组件的宽度; 二、以下快捷键指的是在对象观察器上的操作:【F11】切换到对象观察器(注:如果连续按 F11 则将实现在对象观察器、窗体表格、代 码编辑器之间切换);【Ctrl+Down】下拉当前窗体的组件列表;【Alt+Down】下拉组件当前属性选单队列(如 Align-alNone,alLeft,alRight 等); 【Ctrl+Tab】在属性列表及事件列表中切换;:nt ESC选,直到窗体被选为当前组件为止;定义一个全局变量:MyIDE1;方法二、按 Shift 的同时单击

26、鼠标左键,一步即可选定(推荐); 【Ctrl+Down】.CoDelphicom所有,未经允许,不得进行任何形式转载 注册表就可以了(看完本文后,你会发现就是这么简单)。我们为 Delphi 换肤主要要做两件事(如果有其他要求,可参照之),一是将元件选项板多行 i 第一件事是元件选项板的多行显示,Delphi 的标准元件在元件选项板上有二三十页 ,还有 数十页的第三方控件,但Delphi的标准界面的元件选项板是单行显示的,有时用起来很不方便, 如果能多行显示该多好,请跟我来: IDE以上四个函数及过程的实现部份如下: etLinethene/OnResize 事件, 以便元件选项板能显示元件页;如果不处理该事件,元件选项板将不能显示 下面对以上的代码略加解释: MultiLine 属性,如果 MultiLine 为 True 就将其 OnResize 事件赋与自定义的过程,否则清除 然后改自已和父控件的约束度高度。第二件事是给 IDE 添加图片,这部份就复杂多了, 限于篇幅,这里只作简单介绍,笔者主页上有 菜单的 OnDrawItem 事件,并在该事件中自已绘制菜单项,这样你就可以随心所欲地自已作出E HYPERLINK /SubPagel/Delphi_IDE.htm /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论