type
datasetauto=class(TObject)
private
inserteventclick,editeventclick,posteventclick,canceleventclick,deleteeventclick:Tnotifyevent;
binsert,bedit,bdelete,bcancel,bpost:TButton
procedure initialbutton(AButton:TButton;ADataState:DataState);
procedure p_b_insert(Sender:TObject); procedure p_b_edit(Sender:TObject);
procedure p_b_delete(Sender:TObject);
procedure p_b_cancel(Sender:TObject);
procedure p_b_post(Sender:TObject);
end;
procedure DataSetAuto.InitialButton(AButton:TButton;ADataState:DataState);
begin
if not assigned(Abutton) then
begin
ShowMessage('button设置不对');
Abort;
end;
if ADataState=sInsert then
begin
InsertEventClick:=AButton.OnClick;
AButton.Enabled:=True;
AButton.Tag:=c_insert;
AButton.OnClick:=p_b_insert;
end
else if ADataState=sEdit then
begin
EditEventClick:=AButton.OnClick;
AButton.Enabled:=True;
AButton.Tag:=c_edit;
AButton.OnClick:=p_b_edit;;
end
else if ADataState=sDelete then
begin
DeleteEventClick:=AButton.OnClick;
AButton.Enabled:=True;
AButton.Tag:=c_delete;
AButton.OnClick:=p_b_delete;
end
else if ADataState=sPost then
begin
PostEventClick:=AButton.OnClick;
AButton.Enabled:=false;
AButton.Tag:=c_post;
AButton.OnClick:=p_b_post;
end
else if ADataState=sCancel then
begin
CancelEventClick:=AButton.OnClick;
AButton.Enabled:=false;
AButton.Tag:=c_cancel;
AButton.OnClick:=p_b_cancel;
end;end;
procedure DataSetAuto.p_b_cancel(Sender: TObject);
begin
CancelEventClick(Sender);
binsert.Enabled:=true;
bedit.Enabled:=true;
bdelete.Enabled:=true;
bcancel.Enabled:=false;
bpost.Enabled:=false;
end;procedure DataSetAuto.p_b_delete(Sender: TObject);
begin
DeleteEventClick(Sender);
end;procedure DataSetAuto.p_b_edit(Sender: TObject);
begin
EditEventClick(Sender);
binsert.Enabled:=false;
bedit.Enabled:=false;
bdelete.Enabled:=false;
bcancel.Enabled:=true;
bpost.Enabled:=true;
end;procedure DataSetAuto.p_b_insert(Sender: TObject);
begin
InsertEventClick(Sender);
binsert.Enabled:=false;
bedit.Enabled:=false;
bdelete.Enabled:=false;
bcancel.Enabled:=true;
bpost.Enabled:=true;
end;procedure DataSetAuto.p_b_post(Sender: TObject);
begin
PostEventClick(Sender);
binsert.Enabled:=true;
bedit.Enabled:=true;
bdelete.Enabled:=true;
bcancel.Enabled:=false;
bpost.Enabled:=false;
end;我先把某个button 传进来。
当我在实际使用的时候
把我的方法再原来事件基础上加上
但一点击 某一个button 就会提示空地址错误
求助了!
datasetauto=class(TObject)
private
inserteventclick,editeventclick,posteventclick,canceleventclick,deleteeventclick:Tnotifyevent;
binsert,bedit,bdelete,bcancel,bpost:TButton
procedure initialbutton(AButton:TButton;ADataState:DataState);
procedure p_b_insert(Sender:TObject); procedure p_b_edit(Sender:TObject);
procedure p_b_delete(Sender:TObject);
procedure p_b_cancel(Sender:TObject);
procedure p_b_post(Sender:TObject);
end;
procedure DataSetAuto.InitialButton(AButton:TButton;ADataState:DataState);
begin
if not assigned(Abutton) then
begin
ShowMessage('button设置不对');
Abort;
end;
if ADataState=sInsert then
begin
InsertEventClick:=AButton.OnClick;
AButton.Enabled:=True;
AButton.Tag:=c_insert;
AButton.OnClick:=p_b_insert;
end
else if ADataState=sEdit then
begin
EditEventClick:=AButton.OnClick;
AButton.Enabled:=True;
AButton.Tag:=c_edit;
AButton.OnClick:=p_b_edit;;
end
else if ADataState=sDelete then
begin
DeleteEventClick:=AButton.OnClick;
AButton.Enabled:=True;
AButton.Tag:=c_delete;
AButton.OnClick:=p_b_delete;
end
else if ADataState=sPost then
begin
PostEventClick:=AButton.OnClick;
AButton.Enabled:=false;
AButton.Tag:=c_post;
AButton.OnClick:=p_b_post;
end
else if ADataState=sCancel then
begin
CancelEventClick:=AButton.OnClick;
AButton.Enabled:=false;
AButton.Tag:=c_cancel;
AButton.OnClick:=p_b_cancel;
end;end;
procedure DataSetAuto.p_b_cancel(Sender: TObject);
begin
CancelEventClick(Sender);
binsert.Enabled:=true;
bedit.Enabled:=true;
bdelete.Enabled:=true;
bcancel.Enabled:=false;
bpost.Enabled:=false;
end;procedure DataSetAuto.p_b_delete(Sender: TObject);
begin
DeleteEventClick(Sender);
end;procedure DataSetAuto.p_b_edit(Sender: TObject);
begin
EditEventClick(Sender);
binsert.Enabled:=false;
bedit.Enabled:=false;
bdelete.Enabled:=false;
bcancel.Enabled:=true;
bpost.Enabled:=true;
end;procedure DataSetAuto.p_b_insert(Sender: TObject);
begin
InsertEventClick(Sender);
binsert.Enabled:=false;
bedit.Enabled:=false;
bdelete.Enabled:=false;
bcancel.Enabled:=true;
bpost.Enabled:=true;
end;procedure DataSetAuto.p_b_post(Sender: TObject);
begin
PostEventClick(Sender);
binsert.Enabled:=true;
bedit.Enabled:=true;
bdelete.Enabled:=true;
bcancel.Enabled:=false;
bpost.Enabled:=false;
end;我先把某个button 传进来。
当我在实际使用的时候
把我的方法再原来事件基础上加上
但一点击 某一个button 就会提示空地址错误
求助了!
解决方案 »
- 关于把数据库中的表导出/导入为XML文件
- 为什么这段程序不能运行,大家进来看看!
- 在interface中为什么要加载ToolWin,ComCtrls, Buttons, uTiler,shellapi;它们有什么作用是什么。
- 关于对象创建的一个问题,看看都有分。
- ***迷惑:三层中的数据完整性检查与更新问题***
- 关闭窗口时如何传递状态给另一个窗口调用?急
- query1.execSQL为什么给出出错信息?
- 100元求一个自定义数据库 谢谢帮忙!!!
- 【求助】使用mscomm控件,如果系统有2个以上的可用串口,如何判断当前自己的应用程序占用的是哪个串口?
- 安装构件是否一定需要有该构件包含的单元源代码文件*.pas?
- 请问如何在quickreport里实现 本页合计的功能、、、高手请进!!急!高分相赠!!!
- 怎样用代码实现浏览做好的报表呢??
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
event_click:TNotifyevent;
procedure p_click(Sender:TObject);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}{ TForm1 }procedure TForm1.p_click(Sender: TObject);
begin
event_click(Sender);
showmessage('a');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage('a');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
event_click:=button1.OnClick;
button1.OnClick:=p_click;
end;end.
同样的方法。在form里实现就没有问题