我自己做的控件为什么装不上?(100分)

  • 主题发起人 主题发起人 扶程星云
  • 开始时间 开始时间

扶程星云

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个控件,但怎么也装不上,不知道为什么?请各位帮忙看看。
unit QWeblabel;

interface

uses
Windows, Messages, SysUtils, Classes, QControls, QStdCtrls,ShellAPI;

type
tWeblabel = class(tlabel)
private
{ Private declarations }
Fhttpaddr:string;////定义一个变量存放HTTP主页的地址为了使控件编辑器能够修改它,则加入:
protected
{ Protected declarations }
procedure click; override;
public
{ Public declarations }
procedure ExploreWeb(handle:HWND ; page:PChar);
constructor Create(AOwner: TComponent); override; //重载Create函数
published
{ Published declarations }
property CHttpaddr: string read Fhttpaddr write Fhttpaddr;//将变量输出到控件编辑器中,名称应该为HTTPADDR,前面加C是为了方便,
//它将直接排列在Caption的下面,方便修改。

end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [tWeblabel]);
end;

{ tWeblabel }

procedure tWeblabel.click;
begin
inherited Click; //调用父辈的Click函数
ExploreWeb(0,pchar(Fhttpaddr)); //调用WEB页面
end;

constructor tWeblabel.Create(AOwner: TComponent);
begin
//调用父辈的CREATE
inherited Create(Aowner);
//以下是自己的初始化代码
//将光标设置为手型
Cursor := crHandPoint;
//令标题=主页地址
chttpaddr := 'http://www.handing.com';
Caption:=chttpaddr;
//字体缺省大小为10
font.size := 10;
// font.color := clBlue; //字体缺省颜色为兰色
// font.style := [fsUnderline]; //字体缺省风格为下划线
end;

procedure tWeblabel.ExploreWeb(handle: HWND; page: PChar);
var
Returnvalue : integer; //实际调用WEB页面
begin
ReturnValue := ShellExecute(0,'open',page,nil,nil,SW_SHOWNORMAL);
{ if ReturnValue <= 32 then case
Returnvalue
of 0 :MessageBox('错误:内存溢出!','WEB页面出错信息',[smbOK]);
ERROR_FILE_NOT_FOUND:
Application.MessageBox(handle'错误:文件未找到!''WEB页面出错信息'[smbOK]);
ERROR_PATH_NOT_FOUND:MessageBox(handle'错误:目录错误!''WEB页面出错信息'[smbOK]);
ERROR_BAD_FORMAT :
MessageBox(handle'错误:EXE文件格式错误!''WEB页面出错信息'[smbOK]);
// All other errors . See help for more ReturnValues of ShellExecute
else
MessageBox(handle,PChar('错误信息[:'+IntToStr(Returnvalue)+']')'WEB页面出错信息'[smbOK]) }
end;

end.
 
uses
Windows, Messages, SysUtils, Classes, QControls, QStdCtrls,ShellAPI;
把QControls, QStdCtrls前面的Q去掉即可。
 
你把你的控件弄成CLX控件了。
你在New->Component时注意选择Ancestor type为TLabel [StdCtrls]而不是TLabel [QStdCtrls]即可避免这个问题。
 
font.size := 10;
font.Color := [clBlue]; //字体缺省颜色为兰色
font.style := [fsUnderline]; //字体缺省风格为下划线
提示undeclared identifier:'clBlue' undeclared identifier:fsUnderline,
怎么定义?
 
应该这样:
Font.Color := clBlue;

Font.Style := [fsUnderline]; //No problem
 
thx1180,怎么联系你?想结交你哦。我的QQ:50282.
原因我找到了,是少了在uses 里面加上Graphics了。
再问个问题,由于tlabel没有失去焦点的事件,所以继承的控件也没有,请问如何添加?就是当我把鼠标移动到控件上,颜色改变,但由于没有失去焦点的事件,但鼠标离开控件的时候颜色不能还原。
请到http://www.delphibbs.com/delphibbs/dispq.asp?lid=2392414,回答问题。我好给分。
 
已经回复了[:)]

另:我加你的QQ为什么不通过?[:(]
 
你再试试,这次应该可以了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
1K
import
I
后退
顶部