Delphi 2007 如何安装控件?

Delphi 2006 高级控件应用
来源:电脑报

Borland Developer Studio 2006 已于 2005 年 12 月 5 日正式发布了。 Delphi 2006 是 Borland Developer Studio 2006 产品中的一部分,我们不仅能继续开发基于 Win32 平台的应用程序,还可以使用 Delphi 语言编写 .NET 平台的应用程序,使得 Delphi 程序员可以轻松的将 Win32 平台的应用程序移植到 .NET 平台中。

本文将带领读者去体验一下 Delphi 2006 中高级控件的应用。看完本文后,你会发现,使用 Delphi 2006 将会使你更加高效、快速地开发应用程序。

一、 Delphi 2006 中控件的安装

以前的大多数第三方控件仍然可以在 Delphi 2006 中使用。只是在安装方式上有一些差别。

1 . DPK 控件包的安装方法:

有一些第三方控件提供给我们的是 DPK 文件,在 Delphi7 中,我们直接双击就可以进行安装。但是在 Delphi 2006 中,步骤有一点不同。我们以 FlatStyle 控件的安装为例,讲解一下 DPK 控件包的方法:

第一步:启动 Delphi for Microsoft Win32 ,点击“ File ”菜单下的“ Open Project ”,选择要安装的 DPK 文件 FlatStyle_D7.dpk ,点击“打开”按钮。

第二步:在右边的“ Project Manager ”中,鼠标右击控件名称 FlatStyle_D7.bpl ,在弹出的菜单中点击“Install”。 Delphi 2006 将对控件进行编译并安装。

安装控件

2 .单个 PAS 文件的安装:

有一些第三方控件只有一个 PAS 文件,没有提供安装包,在 Delphi 7 中,可以单独对 PAS 文件进行安装,但是在 Delphi 2006 里,已经取消了这个功能。那么在 Delphi 2006 中如何安装单个的 PAS 文件呢?方法如下:

第一步:点击“ File ”-“ New ”菜单中的“ Package – Delphi for Win32 ”,新建一个控件包。

新建控件包

第二步:选中右边“ Project Manager ”中“ Contains ”文件夹,点击鼠标右键,在弹出的菜单中选择“ Add ”。

添加

第三步:在 Add 对话框中,点击“ Browse ”按钮,选择要安装的 PAS 文件,然后点击“ OK ”按钮。

选择 PAS 文件

第四步:鼠标右击“ Project Manager ”中的“ Package1.bpl ”,在弹出的菜单中选择“ Install ”,这时就完在了控件的安装。

第五步:保存 bpl 文件。

二、属性编辑器控件

1 . TValueListEditor

Delphi 2006 提供的 TValueListEditor 控件可以编写一个类似于 Delphi7 的 Object Inspector 。下面我们就来编写一个简单的属性编辑器,如下图所示:

属性编辑器

第一步:在窗体上放置一个 ValueListEditor 控件(在 Additional 面板中可能找到该控件)。

第二步:添加属性名称及属性值。本例中,我们一共有 3 个属性,分别是“ Name ”、“ Color ”和“ Size ”。 ValueListEditor 为我们提供了 InsertRow 方法,使用该方法可以添加属性名称及属性值。代码如下:

ValueListEditor1.InsertRow('Name', '', True);

ValueListEditor1.InsertRow('Color', 'clRed', True);

ValueListEditor1.InsertRow('Size', '9', True);

是不是非常简单?运行程序,用鼠标点击 Size 中的 9, 效果是否不同呢?编辑器中有一个下拉列表,那么如何实现呢?我们将第三句代码作如下修改:

Index := ValueListEditor1.InsertRow('Size', '9', True);

首先获取要修改的行号, InserRow 在插入一行后,会返回当前行的行号。下面再使用 ItemProps 属性修改“行”的属性:

with ValueListEditor1.ItemProps[Index - 1].PickList do begin

Add('9');

Add('11');

Add('13');

Add('20');

end;

PickList 中就是保存的下接列表中的数据。

现在再运行程序看看效果,是否一样了呢?

下面我们再看一个效果:

带“弹出”效果的编辑器

图中的 clRed 后有一个“ … ”按钮,在 Delphi 7 中,当这个按钮出现时,我们可以通过点击这个按钮弹出一个窗体,进行相应的属性设置。那么,我们要实现这样的效果也是非常简单的,将“ ValueListEditor1.InsertRow ('Color', 'clRed', True); ”这句代码作如下修改:

Index := ValueListEditor1.InsertRow('Color', 'clRed', True);

ValueListEditor1.ItemProps[Index - 1].EditStyle := esEllipsis;

修改 ItemProps 中的 EditStyle 属性为“ esEllipsis ”即可实现这样的效果。但是,现在这个按钮什么都不能干,需要我们加入执行代码才会发挥其作用。在这个例子中,我们要求点击“ … ”按钮后,弹出颜色对话框,然后将用户选择的颜色值显示在 Color 右边的文本框中。我们可以在 OnEditButtonClick 事件中写入实现代码:

procedure TForm1.ValueListEditor1EditButtonClick(Sender: TObject);

var

nRow: Integer;

begin

nRow := ValueListEditor1.Row;

case nRow of

2:

with TColorDialog.Create(nil) do

begin

if Execute then

ValueListEditor1.Cells[2, nRow] := ColorToString(Color);

end;

end;

end;

当点击“ … ”按钮时,会触发 OnEditButtonClick 事件。在 OnEditButtonClick 事件中,我们首先使用 ValueListEditor1.Row 获取当前“行”的行号,也就是鼠标点击的是哪一行的按钮。知道了行号,我们就可以根据行号来加入相应的代码。在本例中,只有第二行有“ … ”按钮,因此,当 Row 等于 2 时,我们就显示颜色对话框。“ ValueListEditor1.Cells[2, nRow] := ColorToString(Color); ”这一句代码是将用户选择的颜色值显示到文本框中。

通过上面的讲解,我们知道了属性记录的添加及设置。那么如何获取某个属性的属性值呢?请看下面:

假如我们要获取 Name 的属性值,我们使用下面的代码即可获得:

ShowMessage(ValueListEditor1.Cells[2, 1]);

前面我们通过 Cells 属性设置了文本框中的内容,在这里,我们可以使用 Cells 属性获取指定文本框的内容。 Cells 有 2 个参数,第一个是列,第二个是行。 Name 的属性值是在第 2 列、第一行中的,因为指定 Cells[2,1] ,如果要获取 Size 的属性值,那么就应该是 Cells[2,3] 。

属性 / 方法说明

DeleteRow 删除指定行。

FindRow 查找行。

ColCount 获取列的个数。

ItemProps.HasPickList 是否捅有下拉列表。

Values 根据 Key 获取 Key 所对应的值。

Keys 获取 Key 的值 RowCount 获取行的个数。

三、系统控件

1 . TTrayIcon 在 Delphi 2006 中,新增了一个 TTrayIcon 的控件。该控件是用于在托盘中显示自己软件的图标。使用 TTrayIcon 控件可以很容易的实现“动态图标”及“气泡提示”功能。如下图所示:

托盘显示

( 1 )“气泡提示”的制作

第一步:在窗体中放置 TrayIcon 控件( Additional 面板中可以找到)。

第二步:设置 TrayIcon 的 Icon 图标,载入一个 ICO 文件。

第三步:设置 TrayIcon 的 BalloonHint 为“ Delphi 2006 高级控件应用”,设置 BalloonTitle 为“电脑报 2005 年合订本”。设置 Visible 为 True 。

第四步:双击窗体,在 OnCreate 事件中写入下面代码: TrayIcon1.ShowBalloonHint;

好了, F9 运行程序,一个“气泡提示”就会出现在图标上。属性中的 BalloonTimeout 是设置“气泡提示”多少秒后消失,默认是 3 秒。

( 2 )动态图标

我们大家都知道,当有 QQ 消息时,托盘中会有一个闪烁图标,使用 TrayIcon 控件可以非常容易地实现这个功能。

使图标动起来,其实就是使用多个图标进行切换。 QQ 的闪烁图标,其实就是使用的两个图标来进行切换的,一个是头像图标,一个是空的图标。

下面我们就来模拟 QQ 头像闪烁功能:

第一步:在窗体上放置 ImageList 控件(在 Win32 面板中可以找到)。

第二步:设置 ImageList 控件的 Width 和 Height 属性为 32 ,然后双击 ImageList ,点击“ Add ”按钮添加图标文件。第一个添加的是要显示的图标,第二个添加一个空的图标(可以使用 Image Editor 新建一个 ICO 文件,然后直接保存即可得到一个空的图标。)。

第三步:设置 TrayIcon 的 Icons 属性为 ImageList1 (可以直接在列表中选择)。

第四步:在 Form1 的 OnFormShow 事件中加入下面的代码:

TrayIcon1.Animate := True;

TrayIcon1.AnimateInterval := 450;

当 Animate 为 True 时,将自动按 ImageList 控件中图标的顺序进行依次显示,形成动态效果。 AnimateInterval 为每隔多少时间显示下一个图标。如果要停止闪烁,将 Animate 设置为 False 即可。

怎么样, Delphi2006 提供的 TTrayIcon 控件是不是很酷。

属性 / 方法说明

Animate 设置是否使用动态图标。

AnimateInterval 图标变化的时间。

BalloonFlags 气泡提示中的图标。

bfError 为错误图标

bfInfo 为信息图标

bfWarning 为警示图标。

BalloonTimeout 气泡提示消失时间。

BalloonTitle 气泡提示标题。

Hint 托盘图标提示。

当鼠标移动到托盘中的图标时显示。

Icon 设置托盘图标。

IconIndex 图标索引。

Icons 图标集合。一般使用 ImageList 控件包含图标集合。

Visible 是否在托盘中显示。

四、界面控件

1 . XPMenu

XPMenu 控件可以帮助我们轻松制作 XP 样式的菜单。这是一个第三方控件,其讲解“单个 PAS 文件的安装”中,就是以 XPMenu 为例讲解的。首先我们先使用 TMainMenu 或者 TPopupMenu 制作好菜单,然后在 XP 面板中将 TXPMenu 控件拖动到窗体中,将 XPMenu 的 Active 和 AutoDetect 属性设置为 True 就可以了。如果我们想自己定义菜单的背景色、边框颜色,甚至是字体的大小及颜色,也是很容易的。下表是修改菜单、字体颜色的属性:属性说明 SelectBorderColor 选中菜单时边框颜色 SelectColor 选中菜单时的背景颜色 SelectFontColor 选中菜单时文字的颜色 Separator Color 分隔线的颜色 Font 设置字体、大小、颜色 2 . FlatStyle FlatStyle 是一套平面控件。如果想你的界面与众不同,那么使用 FlatStyle 是最佳选择。 TFlatTitleBar TFlatTitleBar 模拟标题栏控件。效果如下图所示:模拟标题栏控件将 FlatTitlebar 放置到窗体上,然后将 Align 属性设置为 alTop ,由于窗体中有默认的标题栏,因此我们需要将窗体的 BorderStyle 设置为 None 去掉标题栏。 TFlatHint FlatHint 改变了 Windows 的标准提示信息框样式。其效果如下:

改变效果只要我们为控件设置好了 Hint 属性,并将 ShowHint 设置成 True ,那么将 TFlatHint 控件拖动到窗体上就可以了。由于 TFlatHint 默认使用的字体是英文,显示出来的汉字比较小,只需将 FlatHint 的 Font 属性设置为中文字体即可。五、多媒体控件 1 . TWinAmpComponent 该控件可以帮助我们操控 Winamp 。操控 Winamp 一些常用的 Winamp 方法: WinAmpControl1.Play; 播放音乐 WinAmpControl1.PrevTrack; 前一首音乐 WinAmpControl1.Pause; 暂停播放 WinAmpControl1.Stop; 停止播放 WinAmpControl1.NextTack; 下一首音乐 WinAmpControl1.SetVolume 设置音量 WinAmpControl1.GetSongLength 获取音乐长度 WinAmpControl1.SetRepeat; 设置重复播放 WinAmpControl1.ClearRepeat; 清除重复播放 WinAmpControl1.SetShufle; 设置无序播放 WinAmpControl1.ClearShufle; 清除无序播放 WinAmpControl1.ClearPlayList; 清除播放列表

WinAmpControl1.AddFile 添加音乐 WinAmpControl1.AddDir 添加目录 2 . Audio Components Suite Audio Components Suite ,一套跨平台的音频处理组件包:支持音频回放、捕捉; CD-ROM 回放、 CDDA 捕捉; Wave 流支持; MP3 、 Ogg 、 FLAC 、 Monkey 等格式支持;音频混响处理;输入设备动态捕捉;音频格式转换;声音音频指示器;其他一些特效。录音例子:第一步:添加 TAudioIn 、 TWaveOut 到窗体上。第二步:设置 AudioIn1 和 WaveOut1 的相关属性: AudioIn1.InSampleRate := 44100; AudioIn1.InBitsPerSample := 16; AudioIn1.InChannels := 2; AudioIn1.RecTime := 30; WaveOut1.FileName := SaveDialog1.FileName; 第三步:开始录音 WaveOut1.Run; 一个简单的录音程序就写好了。如果要停止录音,可以使用 WaveOut1.Stop; 。六、文件操作控件 1 . TEasyFileSearch TEasyFileSearch 一个用来搜索文件的组件,支持子目录搜索,支持通配符 (*.*, *.exe, ...) 过滤。可以按最小文件大小、最大文件大小、文件日期进行搜索。搜索文件搜索例子:首先将 TEasyFileSearch 、 TButton 、 TListView 控件添加到窗体上。然后双击 Button1 控件,输入下面的代码: EasyFileSearch1.RootPath := ‘ C:\ ’ ; EasyFileSearch1 SearchOptions := [okIncludeSubfolder] EasyFileSearch1.FileNames.Clear; EasyFileSearch1.FileNames.Add( ‘ *.* ’ ); EasyFileSearch1.Search; 上面 4 句代码就可以将 C 盘下所有文件都搜索出来。 SearchOptions 设置为 okIncludeSubfolder 表示搜索子目录。如何获取搜索到的文件呢?我们可以使用 OnFileFound 事件。代码如下: procedure TForm1.EasyFileSearch1FileFound(FileFound: TFileInformations); var NewItem : TListItem; Time : String; begin { 添加找到的文件 } NewItem := ListView1.Items.Add; with NewItem do

begin Caption := FileFound.Name; SubItems.Add(FileFound.Path); Time := IntToStr(FileFound.Time.CreationTime.wDay)+'/'; Time := Time+IntToStr(FileFound.Time.CreationTime.wMonth)+'/'; Time := Time+IntToStr(FileFound.Time.CreationTime.wYear); SubItems.Add(Time); SubItems.Add(IntToStr(FileFound.Size)); end; end; 2 . Disk Controls Disk Controls 能够让使用例如硬盘、软盘、 CD 、内存、网络、外壳及文件系统的相关开发更加简单。组件介绍及使用方法:( 1 ) dcDiskScanner 用于查找文件。示例代码: dcDiskScanner1.Folder := 'C:\'; dcDiskScanner1.SearchMask := '*.bmp'; dcDiskScanner1.IncludeSubfolders := True; // 包含子目录 dcDiskScanner1.Execute; // 执行搜索在 OnFileFound 事件中获取搜索到的文件: procedure TForm1.dcDiskScanner1FileFound(Sender: TObject; const FileName, FileType: string; const FileSize: Extended; const FileTime: TDateTime; const FileAttributes: TdcScanAttributes; const LargeIcon, SmallIcon: TIcon; SysImageIndex, TotalFiles: Integer; const TotalSize: Extended); begin ListBox1.Items.Add(FileName); end; ( 2 ) dcMultiDiskScanner 该控件的作用及使用方法与 dcDiskScanner 类似。 dcMultiDiskScanner 增加了一个过滤文件的属性 ExcludeList ,该列表中包含的文件将不被搜索。( 3 ) dcFileOperations 该控件可以复制、删除、移动、重命名多个文件或者文件夹。示例代码: dcFileOperations1.FileList.Add('c:\test.txt'); dcFileOperations1.DestFolder := 'd:\'; dcFileOperations1.Operation := foCopy; dcFileOperations1.Execute; ( 4 ) dcFolderMonitor 监视文件夹被删除、复制、更名时的动作。示例代码: dcFolderMonitor1.Folder := 'd:\'; dcFolderMonitor1.Filter := [fmFileName]; dcFolderMonitor1.Active := True; 监视 D 盘,当 D 盘中文件的文件名被更改时,触发 OnChange 事件。( 2 ) dcVirtualDrives 创建虚拟磁盘。

虚拟磁盘示例代码: procedure TForm1.Button1Click(Sender: TObject); begin if dcVirtualDrives1.AddDrive('H', ‘ D:\Music ’ ) then ShowMessage(' 添加成功! '); end; 当我们关闭程序时,应该使用 dcVirtualDrives1.DeleteDrive('H'); 删除虚拟磁盘。( 6 ) dcDiskInfo 获取磁盘信息。指定 Disk 后,即可通过访问 dcDiskInfo 的相关属性获取信息。( 7 ) dcFileInfo 获取文件信息。指定 FileName 后,即可通过访问 dcFileInfo 的相关属性获取信息。( 8 ) dcFileCRC 获取文件的 CRC 值。( 9 ) dcVersionInfo 获取文件的版本信息。主要用于获取 EXE 、 DLL 及 OCX 文件的版本信息。( 10 ) dcShellIcon 获取文件关联的图标。( 11 ) dcShellLink 获取快捷方式所指向的文件。( 12 ) dcShellProperties 显示指定文件、文件夹的属性框及显示右键菜单。( 13 ) dcIcon2Bitmap 可以将图标文件转换为 BMP 图片。 Delphi 的 VCL 为我们开发程序带来了极大的方便。功能强大,丰富多彩的第三方控件更使得我们如虎添翼。