如何实现About窗口中的链结功能(100分)

  • 主题发起人 主题发起人 donkey
  • 开始时间 开始时间
D

donkey

Unregistered / Unconfirmed
GUEST, unregistred user!
大多数软件在Help菜单下都有一个About,用于显示版本信息和网址,E-mail。当把光标
放在链结上时,光标变成手形。当点击About窗口上的链结时,就可以直接调出邮件软件
或是直接连接IE。请问这个功能是如何实现的?Delphi中有相关控件吗?
 
好像可以用shellexecute('网址'或'E-Mail地址');调用默认的程序进行呀!
我记不太清楚了,不知道shellexecute对不对,请高手指正,不过一定有这样一个函数的!
 
先这个
Label1.Font.Style := [fsUnderline];
Label1.Cursor := crHandPoint;
在Label1的OnClick中加入调用ie或OutLook
(这个我就不废话了,以前的回答太多了,查一下吧)
 
>当把光标放在链结上时,光标变成手形。
不过是在mouseenter事件中改变光标类型及加下划线,在mouseleave中再改回来。
在老问题中有它们的示例。

>直接调出邮件软件或是直接连接IE
是用ShellExecute ,不过一般可能要手工在uses中加入shellapi
其原型为:
HINSTANCE ShellExecute(

HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
详细说明可看MSDN.

 
//连接主网:
Var
rHp:Array[0..255] of char;
begin
ShellExecute(Handle,'open',StrPCopy(rHp,'http://'+Label1.Caption),nil,nil,SW_SHOW);
end;
 
怎么老是来晚了,
 
//手:
用一个Label放地址,直接把Label的Cursor设为crHandPoint即可
//打开地址:
设置Label的OnClick事件:
ShellExecute(0,'open',PChar('http://'+Label1.Caption),nil,nil,SW_SHOW); //网页
ShellExecute(0,'open',PChar('mailto:'+Label1.Caption),nil,nil,SW_SHOW); //邮件
 
procedure TFrmAbout.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
with LabelHTTP do
Font.Style:= Font.Style - [fsUnderLine];
end;

procedure TFrmAbout.LabelHTTPMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
with (sender as TLabel) do
Font.Style:= Font.Style + [fsUnderLine];
end;

procedure TFrmAbout.LabelHTTPMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with (sender as TLabel) do
if (Tag = 0) then begin
Top:= Top + 1;
Tag:= 1;
end;
end;

procedure TFrmAbout.LabelHTTPMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with (sender as TLabel) do begin
Top:= Top - 1;
Tag:= 0;
end;
end;

procedure TFrmAbout.LabelHTTPClick(Sender: TObject);
begin
ShellExecute(self.Handle, 'Open', 'http://www.f315.net',nil,nil, 0);
end;

看看我的代码,还能模拟 地址被按下去的动作,鼠标移上去变成手,按下去像按钮的动作。
里面用到了tag
 
在程序中实现打开浏览器,打开邮件程序的功能首先要在uses部分加入uses Shellapi;
接着在需要超级链接的地方使用
SellExecute(handle,nil,pchar('mailto:guihong@163.net'),nil,nil,sw_shownormal);
其中pchar()中的mailtos是打开邮件程序的,可以换成http://、ftp://、gopher://、new:、telnet:等多种形式实现打开文件,打开Windows已经注册的文件其实很简单,根据以下代码定义一个过程:
procedure URLink(URL:PChar);
begin
ShellExecute(0, nil, URL, nil, nil, SW_NORMAL);
end;
在要调用的地方使用URLink('Readme.txt');
如果是链接主页的话,那么改用URLink('http://gui.yeah.net');
 
我有这样的一个控件,要得话可mail给你
 
多人接受答案了。
 
后退
顶部