近日学习控件继承关系,由于刚开始学习,所以有些概念和信息不太了解,借一个问题以加强学习。我在学习过程中发现有些控件没有继承基类的某些事件,如OnDblClick。具体情况如下:
我看的是BSF控件(business Skin Form 即一个皮肤控件 在2ccc.com上下载)他的bsSkinComboBox控件没有OnDblClick事件,他继承的基类是从TControl开始,我现在不明白从TControl开始每个子类没有重载OnDblClick或者其他的特别设置,为什么载bsSkinComboBox控件中无法显示OnDblClick事件。
我试着建立了一个新单元文件,将TbsSkinComboBox的声明加在里面,并在Published中加入property OnDblClick ,也无法显示、动态生成的控件也无法响应此事件。
在此希望,大家帮我解答。
我看的是BSF控件(business Skin Form 即一个皮肤控件 在2ccc.com上下载)他的bsSkinComboBox控件没有OnDblClick事件,他继承的基类是从TControl开始,我现在不明白从TControl开始每个子类没有重载OnDblClick或者其他的特别设置,为什么载bsSkinComboBox控件中无法显示OnDblClick事件。
我试着建立了一个新单元文件,将TbsSkinComboBox的声明加在里面,并在Published中加入property OnDblClick ,也无法显示、动态生成的控件也无法响应此事件。
在此希望,大家帮我解答。
解决方案 »
- C/S结构程序,如果服务器是在互联网的某个网站或是主机上面
- 繁体下简体转繁体
- treeview问题,解决就结分,在线等
- 我已经在TWebBrowser的PopupMenu里加入了我自己的PopupMenu事件,当然里面什么也没写,但是点击鼠标右键还是有快捷菜单出来为什么啊?
- 在stringgrid中怎样某一列不能进行修改?而焦点可以进入?
- 请问哪有delphi操作excel的源代码下载?
- 请问在DELPHI中有没有可以直接显示数据库表的控件?
- 在cxGrid中,在cell的输入字符状态,如何按回车建移动到下一列
- 编译环境下,程序运行,然后点击窗口关闭就弹出以下错误,有那个大虾帮忙解决下
- 请问哪里可以找到BoundsChecker6.X的下载,Thanku.(Null)
- 比较烦的问题
- 有没有搞过HIS医保接口的朋友,UP一下,请教一些事宜
你新的单元文件中的类是继自Tcontrol 还是 TbsSkincombobox, 如果是Tcontrol的话, 你在新类的published中加入property OnDblClick,是可以的
zenwin(zenwin) : 我继承的类是一个中间类TbsSkinCustomComboBox。TbsSkinComboBox 的定义如下:TbsSkinComboBox = class(TbsSkinCustomComboBox)
published
......
property OnComboBoxDrawItem;
property OnChange;
property OnClick;
.....
end;
希望大家指教。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; TxyButton = class(TButton)
private
procedure OnxyDBClick(Sender: TObject);
public
constructor Create(AOwner: TComponent);override;
published
property OnDBlClick;
end;var
Form1: TForm1;implementation{$R *.dfm}{ TxyButton }constructor TxyButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
OnDBlClick := OnxyDBClick;
ControlStyle := ControlStyle + [csClickEvents];
end;procedure TxyButton.OnxyDBClick(Sender: TObject);
begin
ShowMessage('TxyButton OnxyDBlClick');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
with TxyButton.Create(Self) do
begin
Caption := 'xyButton';
Left := 100;
Top := 100;
Parent := Self;
end;
end;end.
begin
inherited Create(AOwner);
ControlStyle := [csSetCaption, csDoubleClicks];//注意这里没有csClickEvents
Width := 75;
Height := 25;
TabStop := True;
end;procedure TControl.WMLButtonDblClk(var Message: TWMLButtonDblClk);
begin
SendCancelMode(Self);
inherited;
if csCaptureMouse in ControlStyle then MouseCapture := True;
if csClickEvents in ControlStyle then DblClick; //还有这里
DoMouseDown(Message, mbLeft, [ssDouble]);
end;