说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

自制THyperLink组件-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
自制THyperLink组件-Delphi资料

很多软件在其About窗口或Help菜单中,可让用户通过单击一段文字就能方便地访问某个网页。比如,Delphi的Help中就有可直接访问该公司主页的菜单项。下面介绍的THyperLink组件是用Delphi3.0编制的,可方便地实现上述功能。

THyperLink是基于TCustomLabel组件的,它有以下特性:

属性:

普通Label组件的所有特性,考滤到实际用途只公布了Caption、Color、 Cursor、 Enabled、 Font、 Hint、 ShowHint、 Visible等属性,其中Font属性在构造函数中被初始化为蓝色带下划线字体,Cursor被置为手型鼠标。别外,增加了URL属性用于存贮网址。在组件内部接管了OnClick事件,用于实现用户单击后调用默认浏览器打开URL中指定的网页,处理各种错误,并将Font属性置为紫色。

方法:

Function Browse(AURL: string): Integer;

{ AURL为网址或文件名。}

事件:

OnClick; { 响应用户鼠标单击动作。 }

具体源码如下:

{ THyperLink VCL

Version 1.0

This is freeware. If you make cool changes to it

please send them to me(1234@5678.com).

}

unit HyperLink;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

ShellAPI

Stdctrls;

type

THyperLink = class(TCustomLabel)

private

FURL: string; // 存贮网址或文件名

FOwnerHandle: HWND;

protected

procedure DoOnClick(Sender: TObject);

// 处理用户单击鼠标

public

constructor Create(AOwner: TComponent); override;

Function Browse(AURL: string): Integer;

published

property Caption;

property Color;

property Cursor default crHandPoint;

property Enabled;

property Font stored True;

property Hint;

property ShowHint default True;

property URL: string read FURL write FURL;

property Visible;

property OnClick;

end;

procedure Register;

implementation

constructor THyperLink.Create(AOwner: TComponent);

begin

inherited Create(aOwner);

FOwnerHandle := (Owner as TForm).Handle;

OnClick := DoOnClick;

Cursor := crHandPoint;

ShowHint := True;

Font.Color := clBlue;

Font.Style := [fsUnderline];

Font.Size := 10;

end;

procedure THyperLink.DoOnClick(Sender: TObject);

begin

if (not (csDesigning in

ComponentState) and (FURL < >'')) then

begin

Browse(FURL);

// 调用相应程序打开URL中的网址、文件

Font.Color := clPurple;

end;

end;

Function THyperLink.Browse(AURL: string): Integer;

var

RtnValue: Integer;

begin

RtnValue := ShellExecute(FOwnerHandle

'Open'

PChar(AURL)

nil

nil

SW_SHOWNORMAL);

case RtnValue of // 处理各种错理

0: ShowMessage('The operating system is out of memory

or resources.');

ERROR_BAD_FORMAT: ShowMessage( 'The .EXE file is invalid

(non-Win32 .EXE or error in .EXE image');

SE_ERR_ACCESSDENIED: ShowMessage( 'The operating system

denied access to the specified file.');

SE_ERR_ASSOCINCOMPLETE: ShowMessage( 'The filename

association is incomplete or invalid.');

SE_ERR_DDEBUSY: ShowMessage( 'The DDE transaction

could not be completed because other DDE transactions

were being processed.');

SE_ERR_DDEFAIL: ShowMessage( 'The DDE transaction failed.');

SE_ERR_DDETIMEOUT: ShowMessage( 'The DDE transaction

could not be completed because the request timed out.');

SE_ERR_DLLNOTFOUND: ShowMessage( 'The specified

dynamic-link library was not found.');

SE_ERR_FNF: ShowMessage( 'The specified file was not found.');

SE_ERR_NOASSOC: ShowMessage( 'There is no application

associated with the given filename extension.');

SE_ERR_OOM: ShowMessage( 'There was not enough

memory to complete the operation.');

SE_ERR_PNF: ShowMessage( 'The specified path was not found.');

SE_ERR_SHARE: ShowMessage( 'A sharing violation occurred.');

else

if(RtnValue < =32) then ShowMessage( 'Unknown

Error in ShellExecte.');

end;

Result := RtnValue;

end;

procedure Register;

begin

RegisterComponents('Tools'

[THyperLink]);

end;

end.

由于THyperLink内部使用ShellExcute函数来打开网页,而ShellExcute函数的特点是可调用与给定文件相关联的应用程来打开该文件,所以在属性URL中设置其它类型的文件(如E-mail地址、文本文件、图像文件,甚至是数据库文件),只要用户的计算机内有相应程序,ThyperLink就能打开该文件。不过E-mail地址应写成mailto:1234@5678.com这样的型式。以下是一简单的示例程序:

unit sample;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

Menus

StdCtrls

HyperLink;

type

TForm1 = class(TForm)

HyperLink1: THyperLink;

MainMenu1: TMainMenu;

Help1: TMenuItem;

BorlandHomePage1: TMenuItem;

procedure BorlandHomePage1Click(Sender: TObject);

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BorlandHomePage1Click(Sender: TObject);

begin

HyperLink1.Browse('http://www.borland.com');

end;

end.

因为ThyperLink组件的父类是TCustomLabel组件,所以它拥有TCustomLabel的全部属性、方法、事件,这就是说如果需要的话,你可直接使用它们。

行业应用,移动优先:移动难七大痛点剖析 HTML5开发必备:游戏开发资源合集 老而弥坚:65岁传奇Android工程师谈开发 2013中国云计算有奖大调查,每周大奖等你拿! Google Reader之死另一个不为人知的原因 小团队谈推广:豆果、金山、微博易、面包旅行 敏捷实战:如何让团队迭代交付周期缩短一半 移动设备管理初创公司AirWatch:首轮融资2亿美元 New Relic:不等应用崩溃,实时监控你的App! Zynga力挽狂澜三步棋:移动+授权+自有网络 巧用MapReduce+HDFS,海量数据去重的五大策略 革自己的命?为带来一致体验 IE11伪装FireFox 最古老的Linux发行版Slackware以及Arch Linux齐弃MySQL JEECG v2.3 发布,基于代码生成器的智能开发框架 Mozilla将设应用工场 Firefox OS瞄准欧洲南美 Summly创始人:12岁开始编程 17岁公司卖了3000万美元 因SaaS与NoSQL,Oracle雄风不在? 那些年云计算领域的大牛们 回顾:那些被平台方封杀的第三方应用 [热帖推荐] 中国的程序员,真的“短命”吗? 聚焦HTML5移动开发 第六届英特尔杯大学生软件开发大赛开幕 虚拟化技术新星Pluribus Networks获中国VC青睐 可穿戴开发!Pebble Watchface SDK 4月发布 我想做个程序员:一位编程小白的App开发故事 Go 1.1发布,支持向后兼容 Polycode:免费、开源的跨平台(游戏和APP)开发工具 为何大多数云计算公司注定要失败 究竟是什么让Redshift比Hive快10倍?! [评论]将Linux拒之门外 微软被开源社区指控垄断 精细化运营:友盟统计分析SDK 3.0版本发布 “锤子OS”功能猜测与罗式对比营销 jsp和servlet是怎样交互的? 请问 有什么方法能实现 在几个数中随机取出几个数 谢谢 请问:在执行文件DPR中有一段代码出现错误,请各问指点! 两个问题:1 关于.NET中 一个新控件propertyGrid1的使用问题;2 我想生成一个由lable和TextBox合成的控件(label在左,TextBox靠其右),怎么办? 分栏打印 依旧是undefined function mysqsl_connect()问题 急:如何在生成的exe中添加新的属性页,显示更多文件信息? V-DVD ROM!? MSDN上的例子需要uafxcwd.lib,怎么找不到呢? 请问窗口的other事件是如何触发执行的 JSP如何学习 vc在什么时候会引起小喇叭的叫声 请教高手,如果在VB里实现内存共享? 用什么方法可以转换图片类型?譬如将BMP格式的转换为JPEG格式的,请各位大哥给点提示!!! 关于vb script数组和函数功能的二个问题!高难度! 关天打印问题? 只能最小化到屏幕的左下角 *急:无为,acptvb,请帮忙看看http://www.csdn.net/Expert/topic/426/426766.shtm (有关XMLHTTP) 在php中要取出一段字符串的前n个字节,而又要判断最后一个是中文还是英文,如果是中文则将最后半个字符省略应该怎么做? 有在BCB5中用过sapi5朗读中文的朋友,高分送上! 最初级的问题,关于编译程序的。 重庆市信息产业办公室荣获全国最差信息产业办公室称号 大家用PB创建Jaguar应用程序时,一般创建一个大包还是多个包阿? 奇怪的问题,来者有分!没回答问题的先到先得! 如何把临时表建在内存中 请教一个关于DELPHI多线程的问题 *急:无为,acptvb,请帮忙看看http://www.csdn.net/Expert/topic/426/426766.shtm(有关XMLHTTP) 比爱情少一点,比友情多一点,即不讨厌又不来电,你能做到吗? 请教一个问题,一个分两帧的窗口,分别是两个CView的子类。一个view里的下拉框选中一条记录,使另一个view刷新。不知道用什么mfc函数。 有关新开窗口的问题! please intrduce a good muti-root soft for win95,win98,winme,win2000,winxp 求助:哪位大侠能介绍一下网络传输设备(象 HDSL、Cable Modem)的品牌、厂家和性能? 我的ie浏览器怎么了? 搞软件开发时应不应该是一边看书一边搞开发? 请教:C中的共同体是什么?谁能解释一下或举例说明 关于线程套间问题。 请教各位在oracle中如何在date字段下条件? Window me对ADO是不是支持的不够好??? 请问csdn.net使用shtml如何构架的! 安装Acrobat后,只出现一个PDF Writer虚拟打印机,Adobe Distiller却死活装不上,不知是何原因? sybase anywhere5.0 支持 mid 函数吗,如果支持该怎么写 微软的一道面试题!!!!! help me!(53)问题解决以后再送100分 为什么我的win2000server上装不上Exchange5.5? 虚拟DVD-ROM????!!!!!!!!!!!!!!!!!!!!!!!!!!!!???? 建ORACLE网络服务名的问题!!! 数组作为地址传递到dll,在dll内进行修改,dll释放后,数组也跟着释放,怎么办呢??先谢了! 有关程序的规范写法 谁有minix操作系统的代码 PalmOS中的手写接口? 一个比较搞人的钩子问题! 把0.4改写成计数单位是千分之一的数是( ). 地球内部引力变化地球内部引力是越接近地心引力越大还是越小,我自己分析是越小,不知道对不对 去掉3.900末尾的零后,计数单位由原来的( )变成了( ) 车对地面的压力和地面对车的支持力是不是一对平衡力 地球内部引力随高度怎样变化 把小数点后面的零去掉,小数的计数单位就发生改变吗? 压力和支持力是一对平衡力吗,为什么? 地球内部有引力吗?地面上的物体会受引力附在地球上,那么地球核心的引力是什么样的呢?地球的中心的物体都悬浮在地球内部的空间中吗? 如何测量静摩擦力和滑动及滚动摩擦力?计算公式那么在什么情况下,作用在物体上的力等于静摩擦力? 为什么弹簧的弹力不能瞬间消失,而绳子和杆的弹力可以瞬间消失? 人对车的压力和车对人的支持力是一对平衡力吗? 关于地球内部引力地球内部任意一点是没引力效果的吗?还是另需计算?具体怎么计算的呢?这和均匀带电体内任意一点是一样道理的吗?(不要高斯定理算的)谢谢了. 在剪断的瞬间,是连着绳的物体受力不会突变还是连着弹簧的物体? 为什么他们之间没有摩擦力? 地球内部引力怎样计算? 书放在水平桌面上,桌面受弹力作用,产生弹力的直接原因是 A书的形变 B桌的形变 C书.桌的形变 D书受的重力刚考完试 这题不确定 地球同步卫星,相对与地面是静止的,因此卫星 A.不受任何力的作用 B.受地球的吸引力 C.受一对平衡力的作用D.受力情况不清楚 51.7的计数单位 静止放在水平桌面上的书,受到的作用力?能不能讲讲受力分析.能不能答得标准一点 小数十分位上的计数单位比千分位上的计数单位( )A 大0.99 B 小0.09 C 大0.099 D小0.9 51.7有多少个计数单位 静止在水平桌面上的书,受到( )和( )的作用,这两个里的关系是大小( ),方向( ),作用在( ) 小数十分位的计数单位比千分位的计数单位--A.大0.9 B .大0.99 C .大0.099 D.大0.999 这四个答案选哪个?为 51.2的计数单位是什么 摩擦力的大小与弹力成正比吗?说明理由. 摩擦力的方向与接触面相切 Why?最好画图说明,看了很多介绍不理解. 其中没有受到滑动摩擦力的是 摩擦力的大小与什么有关? 摩擦力的方向与接触面相切怎么理解?那和接触面平行吗?rt如何理解呢?还是不理解相切 我想问下 汽车在公路上匀速行驶时 收的牵引力和摩擦力是平衡力时汽车受到的牵引力 是作用在汽车上还是地面上 还有摩擦力呢力作用在什么地方 要怎么判断呢 滑动摩擦力与弹力的区别和联系是什么? 如何理解摩擦力的方向与接触面相切 初二物理关于如果没有摩擦力的作文急 啊 !800里告急!~ 滑动摩擦力中,摩擦力方向与其物体弹力方向有什么关系吗?是永远相互垂直吗?摩擦力方向与其物体弹力方向有什么关系 是否相互垂直 如果不是请举例 物体所受摩擦力的方向总是和接触面相切对么 嗯、我知道与相对运动什么的相反,就问这句对么~选择,可以选么 《如果世界没有摩擦力》论文我要高中的,500字左右,三篇可以了一定要三篇 滑动摩擦力中,摩擦力方向与其物体弹力方向有什么关系吗?是永远相互垂直吗?拜托各位了 3Q摩擦力方向与其物体弹力方向有什么关系 是否相互垂直 如果不是请举例 “摩擦力的方向总与接触面相切”这句话怎么解释? 假如世界上没有摩擦力100字物理论文 为什么有摩擦力一定要有正压力(弹力)? 地球自身的引力是自己内部压力的来源?地球内部之所以有那么大的压力,是因为地球自身的万有引力造成的!这是对的吗?要是不是对的,那是为什么呢? 怎么写关于摩擦力的物理小论文只要方法,尽快一小时 地球的引力是否就是地球的重力呢?是磁场力吗?地球的引力、重力、磁场力是一回事情吗?地球的重力是因为地球的磁场而产生的吗?如果答的好,分数翻倍奖励, 地球的引力是怎样产生的?还有,压力的作用是什么? 一篇物理论文《假如生活没有摩擦力》800字论文 有摩擦力一定有弹力?说明原因语言要简洁 79648000中,7在( )位上,计数单位是( ),6在( )位上,计数单位是( ),8在( )位上,计数单位是( ) 4.7的计数单位是( ),它有( )个这样的计数单位. 有摩擦力就一定有弹力吗 什么计数单位之间的进率是77进制的, 7.58有几个这样的计数单位啊 0.92里面有几个千分之一的计数单位 十万位的计数单位是什么? 用事例来区分静摩擦力滑动摩擦力和滚动摩擦力用事例来区分静摩擦力 滑动摩擦力 和滚动摩擦力.请以初中物理角度来区分. 8.95的计数单位是(),它里面含有()千分之一 急救:高中物理摩擦力习题车对人的摩擦力?2.如图所示,小车的质量为M,人的质量为m,人用恒力F拉绳,若人和车保持相对静止,不计绳和滑轮质量及车与地面的摩擦,则车对人的摩擦力可能是:( 如何判断静摩擦力还是滑动摩擦力还是滚动摩擦力,请举例说明 请问0.09的计数单位是什么 高中一道关于摩擦力的物理题T1 (1) 有四块完全相同长方体木块,质量都为m,给四块木块标号A、B、C、D,用一个力F1,把A、B、C、D压在墙面上,并且ABCD都落在一块,如图: →ABCD| 问:B 去掉0.40末尾的零,它的计数单位如何变化? 跪求!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn