自定义控件的事件响应问题。 本帖最后由 huboy 于 2012-08-12 21:27:18 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题解决了。代码附上吧。代码未经整理,将就着看吧。只能说一句:DELPHI本身的代码真实博大精深(以下代码完全抄袭自DBNavigator)。 楼下的继续来接分吧。 EBtnClick = procedure (Sender: TObject; Button: TButton) of object; TyHistoryLineChart = class(TChart) private FDataEdit:TsDateEdit; FButton:TButton; FOnBtnClick: EBtnClick; procedure ClickHandler(Sender: TObject); protected // public constructor Create(AOwner:TComponent);override; destructor Destroy;override; //procedure Paint; override; procedure Click; override; procedure BtnClick(Index: TButton); virtual; published property OnClick: EBtnClick read FOnBtnClick write FOnBtnClick; end;constructor TyHistoryLineChart.Create(AOwner:TComponent);var t:TLineSeries;begin inherited; // Create(AOwner); // FDataEdit := TsDateEdit.Create(nil); FDataEdit.Parent := self; FDataEdit.Top := 3; FDataEdit.Left := 3; FDataEdit.Height := 25; FDataEdit.Width := 90; FDataEdit.Text := FormatDateTime('yyyy-mm-dd',Now); // FButton := TButton.Create(nil); FButton.Parent := self; FButton.Top := 3; FButton.Left := 3 + 90 + 3; FButton.Height := 25; FButton.Width := 65; FButton.OnClick := ClickHandler;end;destructor TyHistoryLineChart.Destroy;begin FDataEdit.Free; FButton.Free; inherited;end;procedure TyHistoryLineChart.ClickHandler(Sender: TObject);begin if Sender.ClassName = 'TButton' then BtnClick(TButton(Sender)); end;procedure TyHistoryLineChart.BtnClick(Index: TButton);begin if not (csDesigning in ComponentState) and Assigned(FOnBtnClick) then FOnBtnClick(Self, Index);end; 我不明白你这个是干嘛的, 向Chart里塞2个控件, 什么目的啊, 你把用途说出来, 我觉得这样做你的button都没干什么啊 目的就是将Button的Click事件Publish,,看我后面给的代码。 Tchar如何使两个series显示在一个横坐标中? 数据类型不匹配? 春节了,提最后一个问题,兼散分。 如何隔行设置TDBGrid的背景颜色? TMySQL组件能调用MySQL5.0的存储过程吗? 如何在DLL中处理indy组件异常? 这里真的就没有高手吗?看来高手从来不需要交流啊!高手进来! oracle 10g 快速导出expdp从服务导出到本地 参数network_link高手来帮忙看看 xpmenu,谁会用! 应用程序和Dll共享TDatabase.Databasename的问题? 保留小数问题。 Delphi中TSaveDialog问题
EBtnClick = procedure (Sender: TObject; Button: TButton) of object;
TyHistoryLineChart = class(TChart)
private
FDataEdit:TsDateEdit;
FButton:TButton;
FOnBtnClick: EBtnClick;
procedure ClickHandler(Sender: TObject);
protected
//
public
constructor Create(AOwner:TComponent);override;
destructor Destroy;override;
//procedure Paint; override;
procedure Click; override;
procedure BtnClick(Index: TButton); virtual;
published
property OnClick: EBtnClick read FOnBtnClick write FOnBtnClick;
end;constructor TyHistoryLineChart.Create(AOwner:TComponent);
var
t:TLineSeries;
begin
inherited; // Create(AOwner);
//
FDataEdit := TsDateEdit.Create(nil);
FDataEdit.Parent := self;
FDataEdit.Top := 3;
FDataEdit.Left := 3;
FDataEdit.Height := 25;
FDataEdit.Width := 90;
FDataEdit.Text := FormatDateTime('yyyy-mm-dd',Now);
//
FButton := TButton.Create(nil);
FButton.Parent := self;
FButton.Top := 3;
FButton.Left := 3 + 90 + 3;
FButton.Height := 25;
FButton.Width := 65;
FButton.OnClick := ClickHandler;
end;destructor TyHistoryLineChart.Destroy;
begin
FDataEdit.Free;
FButton.Free;
inherited;
end;procedure TyHistoryLineChart.ClickHandler(Sender: TObject);
begin
if Sender.ClassName = 'TButton' then BtnClick(TButton(Sender));
end;procedure TyHistoryLineChart.BtnClick(Index: TButton);
begin
if not (csDesigning in ComponentState) and Assigned(FOnBtnClick) then
FOnBtnClick(Self, Index);
end;
目的就是将Button的Click事件Publish,,看我后面给的代码。