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

自制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的全部属性、方法、事件,这就是说如果需要的话,你可直接使用它们。

Google炮轰Facebook:你们的社交已经过时了! iOS设备硬件规格完整汇总 2012 MDCC“2012移动互联网应用创新大赛与开发者面对面”专场:创所未享,携手逐梦! RIM携QNX为“2012 BlackBerry平台移动应用高校竞赛” 颁奖 BlackBerry 10 策略:用金钱吸引游戏开发者 黑莓10要来了:RIM正式开放应用提交 从RIM与微软达成exFAT授权所想到的 OpenStack中国行来到南京 中兴通讯分享电信行业应用 CSS架构目标:预测、重用、扩展、维护 黑客利用移动浏览器漏洞窃取云计算资源 地位动摇:Windows设备10月销量同比下滑21% 手机QQ浏览器4.0 Android版 极速快感 生存还是毁灭:Facebook惨败真是HTML5的错? OpenStack基金会主席:一年后成熟度超越CloudStack 在线学习新编程 技巧全攻略 “英特尔杯”HTML5程序开发邀请赛侧记 C#编译器组首席工程师Eric Lippert离职 加盟Coverity Testacular:Google开源的JavaScript测试执行过程管理工具 黑莓亚洲开发者大会报道:BB10将敲开亚洲应用市场大门 挑战Google!传Facebook与Yahoo要联手开发搜索引擎 揭秘Android 4.2 开发者的天堂与地狱 11大黄金法则:顶级移动UX设计心髓 库克时代:苹果已经不是苹果 设计师必备:极简风格的Fluid UI快速原型图工具 iPhone 5发布,后乔布斯时代苹果乏善可陈 牛人妙计:HTML5应用也能像原生一样跑得快 移动周报:OpenFeint难逃关闭命运 细数与苹果恩怨史 FlyingDaggers团队专访:不浮躁,用心做真正的原创游戏! IT巨头混战:谷歌、苹果、Facebook以及亚马逊的四国演义 乐视TV:智能电视平台——Android 开发者的新空间 TIOBE 2012年12月编程语言排行榜:Objective-C冲刺卫冕年度语言 热热热!!!热疯了!!! 我的喇叭哪儿去了? 我的PB程序出了问题了!!! sql server中哪个函数是用于字符串与整型之间转换的? 我想限定文本输入框只能输入10个汉字或20个英文字符,但文件输入框却只能输入10个英文字符,如何解决? 当我将这样的字符串“dsdsdsdfsdffsdsdfsdfsfdsdfsdfsfsfdsdffs.....”放入我的表格中时,无论怎样设置也不折行,影响了部局,如何解决? MFC中视图(view)是怎样随着主窗口的大小改变而改变的。 急!请教!!猫猫连接,用数据管道同时访问两库,访问不到对方的网络库(sybase) 关于电影下载 我已经把一个exe文件加入到我自己的程序中了,请问在我的程序中应该样调用该exe文件呢? 哪位高手知道RTF格式的含义?或者更好,知道Rxlib中的RXRICHEDIT控件中识别RTF格式的方法? Delphi编写的DLL在VC下不能使用 请问哪儿有电工的<>的电子版下载?我只有这么多了 msdn2001年4月版的讨论 请问哪儿有电工的<>的电子版下载? 请教高手!!!! 请进 各位:周末愉快!为何我的多表查询用updatebatch提交时总是报错? 我不明白!!!! 请问,BAS 与 VBJ 有什么区别吗?为何他们安装在同一个目录呢? 如何得到系统进程的列表? vi下如何撤销操作? 我们知道MFC中的对象序列化做得很好,不知在DELPHI中怎样来实现对象的序列化? 我已经学过C++,想学VC++请问哪本书入门比较好啊? 欢迎使用技巧酷skillstore beta 1.00 有个可以显示IP的QQ,很不可思议,讨论一下好吗? 怎样在程序运行的时候加上参数,比如说双击文本文件打开记事本 谁有运行后烧硬件的程序 用VC开发如何实现网页的同步浏览呢? 动态产生的datawindow怎样调整它的显示? 怎么从ORACLE白痴到高手 怎样通过程序员考试??????? 庆祝北京成功 COM基础问题 感谢huangguanshu回答我的问题,请进来拿这200分 老问题了,access to SQLserver 关于的js问题(高分相送) 谁有运行后烧硬件的程序,要多少分都给. 请高手赐教, DDDW 的问题 ?谁有运行后烧硬件的程序,要多少分都给. hotmail box怎么用不了? sql的image型字段内容如何输入? 谁有运行后烧硬件的程序,要多少分都给 谁有运行后烧硬件的程序??要多少分都给 谁有运行后烧硬件的程序???要多少分都给 Linux是不是不支持POSIX IPC啊? 关于red hat 7.0与WIN98 共存的问题 关于用PostMessage发消息时所遇到的问题 火急,关于netxray的打印问题? ???????大问题。。。。。那位知道Delphi6企业版的SN? 高手请进,(关于修改数据库中的照片); 方程x²-9=0的解集是? 如果a²-4b²=20,且a+2b=-5,则a-2b的值是() A.5 B.4 C.-4 D.-5求结果 思路 速求~ 计算:(a+2b-3)² 方程x²+x+1=0所有实数解的集合,用描述法表示. 因式分解4ab²-4ab+a² A.4b(b-a)+a² B.(2b-a)² C.(2b-a)(2b-a) D.(2b+a)² 4³-3²= 用公式法解下列方程(1)x²-6x+1=0(2)2t2-t=6 (3)4x2-3x-1=x-2 (4)3x(x-3)=2(x-1)(x 1) 已知a、b满足a(a+1)-(a²+2b)=1,求a²-4ab+4b²-2a+4b的值. (-3)³÷9/4×(-2/3)²+4-2²×(-1/3) 设集合A={x|x²-2x-3=0},B={x|x²-ax-a²+1=0}(1)若a=-1,求A∪B(2)若A∩B={3},求实数a的值 方程x²+x+1+2根号(x²+x+4)=0用换元法解题,设y=___________,则所得方程为_______ 已知a-b满足a(a+1)-(a05+2b)=1,求a²-4ab+4b²-2a+4b 若集合A={-1,3}集合B={x|x²+ax+b=0}且A=B求实数a,b 用列举法表示集合 B={y∈N}|y=—x平方+6,x∈N} C={(x,y)|y=—x平方+6,x∈N,Y∈N} 用平面图形的面积来解释恒等式(a+2b)(a-2b)=a²-4b² 其中(a>0,b>0) 已知实数ab 分别满足a²+2a=2 b²+2b=2 求a分之1 + b分之1 的值 请用图形面积说明(a+2b)(2a+b)=2a²+5ab+2b²恒成立,画出图形 设A={(x,y)|y=x²+2x+5},B={(x,y)|y=ax+1},问:(1)a为何值集合A∩B有两个元素?(2)a为何值时,集合A∩B至少有一个元素? 已知实数a,b满足a(a+1)-(a^+2b)=1,求a^-4ab+4b^-2a+4b的值 我们可以用几何图形来解释一些恒等式,请构图解释(a-2b)²=a²-4ab+4b² 用列举法表示集合A={y/y=X²,-1≤x≤1,x属于N},-1≤x我知道-1≤x≤1 中x=-1,0,1 因为x属于N,所以x=0,1 x的值用集合可表示为{0,1}.当x=0时 y=0 ,当x=1时 y=1 所以A={0,1}.亲 这是为什么呢 已知实数a,b满足a²+2a=2,b²+2b=2,且a≠b,求b/a+a/b的值 在这个反比例函数y=ax²+bx+c的图像中如何证明c-4b>0图图 集合P={(x,y)| y=x²+2,|x|≤1,x∈Z},用列举法表示集合P 已知实数a、b满足a²+2a-1=0,b^4-2b²-1=0,且ab²1,(在下面补充题目)求[﹙ab²+b²+1﹚/a]²º¹º的值上面打错了,是“且ab²≠1”,不是“且ab²1” 已知a^2+2ab+b^2=0,求代数式a(a+4b)-(a+2b)(a-2b) 集合﹛﹙x,y﹚│y=-x²+6,x∈N,y∈N﹜怎样用列举法表示?问题在于它没给符号,那我怎么表示? 已知2b-b=7,求代数式[a²+b²-(a-b)²+2b(a-b)]÷4b的值 已知a^2+2ab+b^2=0,求代数式a(a+4b)-(a+2b)(a-2b)的值 '用列举法表示下列集合 (1)A={x∈N∈0 已知a²+b²+2a+4b+5=0.求代数式[(a+b/2)+(a-b/2)²]·(2a²-1/2b²)的值. 已知a+2ab+b=0,求代数式a(a+4b)-(a+2b)(a-2b)的值. 用列举法表示下列集合 ①A={x|x²=9} ②B={x∈N|1≤x≤2} ③C={x|x²-3x+2=0} 若实数a,b满足a+b²=1 ,则a²+4b² 的最小值是..? (a²+b²)-4a²b² 已知a²+2ab+b²=0,求代数式a(a+4b)-(a+2b)(a-2b)的值第二道详解 2x²-3x=2 2x²-4根号下2x+3=0 3x²+2x=0 用配方法解方程 已知a,b为实数,则a²+ab+b²-a-2b的最小值 已知a²+2ab+b²=0,求代数式a(a+4b)–(a+2b)(a–2b)的值 解方程:2x²+2/x²-7x+2=0 已知实数a,b满足a(a+1)-(a²+2b)=1,求a²-4ab+4b²-2a+4b的值 已知2a-b=5,求代数式[(a²+b²)+2b(a-b)-(a-b)²]÷4b的值 写出由方程x²-(a+1)x+a=0的解组成的集合中的元素答案清楚,就是不知道怎样描述这个集合,希望过程能写详细点 设a.b为实数,求a²+2ab-2b²-4b+5的最小值,并求此时a与b的值.急用阿 a/b√(a²b) * 2√(b²/a) / 2/3√(a³b) 等着你回答,别坑我、. 以方程x²-4x+4=0和方程x²-x-2=0的解为元素的集合中含有___个元素. 已知a-2b=7,ab=-3求a²+4ab+b²急需. 2a³b√a²b×3√a/b÷1/2√b²/a 以方程x²-4x+4=0和方程x²-x-2=0的解为元素的集合中含有几个元素 A-2B=7 AB=3 求 A²+4AB+B² [-3(a+b)²]的3次方·[2(a+b)³]² 用列举法写出方程 x²-(a+1)x+a=0 的解集 已知(a+2b)²=7,(a-2b)²=3,求:⑴a²+b²的值,⑵ab的值 计算:(-a²)³b³-2b*(a³)²*b²-a^4*(-b)³*(-a)²²:平方 ³:立方 用列举法表示下列方程x²-2x+1=0的解集 计算:[﹙ab-2b﹚²×﹙2a﹚²-﹙4ab﹚²]÷[16a×﹙ab﹚²]还有一题,把下列个多项式分解因式(m²+3)²-8(m²+3)+16还有一题,当y-x=5时,求x²-y²+5x+5y+2009的值 计算:(-a²)³b³—2b*(a³)²*b²—a四次方*(-b)³*(-a)² 用公式法解关于x的方程ab(x²+1)=a²x+b²x(a²>b²) 已知a-2b=½,ab=2.求a³b-4a²b²+4ab³的值. 计算:-(a²)³b³-2b·﹙a³)²·b²-a的4次方·﹙-b﹚³·﹙-a﹚².
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn