乍样在定义一个事件使每个FORM.oncreate都加载自定义事件? (50分)

  • 主题发起人 主题发起人 skyhero
  • 开始时间 开始时间
S

skyhero

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说自定义一个事件,
showmessage;
begin
showmessage('this is a test');
end;
后在每个from 的oncreate都能继承调用该事件:
如:
form1oncreate( sender:tobject);
begin
showmessage('this is a test form1.oncreate');//这边不能增加任何代码所能工作只能放在showmessage;
end;
打开FORM1
显示结果:
this is a test form1.oncreate
thsi is a test
如果要显示为这样的结果,showmessage要如何写,让各个窗口的oncreate能够继承,并且我不希望改变任何的form 代码.
 
Constructor Create(AOwner : TComponents);Override;
Constructor Create(AOwner : TComponents);
begin
inherited Create(aOwner);
ShowMessage('this is a test');
end;
 
自己写一个TMyFrom,从TForm类继承,将showmessage写到OnCreate事件中,
以后的每个From从TMyFrom中继承就行了。
 
先在一个窗体中定义好你需要的那个事件
然后其他窗口都继承这个窗口
 
这样可以,刚才测试过:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure Showmess;
end;

TForm2 = class(TForm1)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
form2 :tform2;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Showmess;
end;

procedure TForm1.Showmess;
begin
showmessage('this is a test form1!');
end;

{ TForm2 }

procedure TForm2.FormCreate(Sender: TObject);
begin
inherited;
showmessage('this is a test form2!');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
form2 := tform2.Create(application);
form2.Show;
end;

end.
 
to:大家:
你们可能没有明白我的意思,
其中各个FORM 我已建好了现在我不想改变任何FORM。ONCREATE中的代码,我希望能够写一个事件使所有能继承的FORM。ONCREATE事件,并且不破坏各个FORM。ONCREATE中的代码作用,
比方说:
我们可以自定义APPLICATIONEVENT 事件,放在PROJECT中使APPLICATION。ONEXCEPTION:=APPLICATIONEVENT,(把所有的应用程序所有的出错信息都让给APPLICATIONEVENT处理;但不能处理的要留给系统做)
所以我要做的便是类于这样的工功能。
 
那就写一个事件:
比如
procedure TMainFrm.ProTest(A:string;B:integer;....);
begin
//要执行的代码
end;

在各个想要执行这段代码的函数或事件中写到:
ProTest(NIL);
即可!
 
将DELPHI的TFROM重写,写成你想要的。
别用臭蛋扔我!
 
建一个个父类窗体,把公用过程/函数写进去
如:
type
TFrm_Base = class(TForm)
procedure UserGroupBtnHint(Sender: TObject);
.......
.....
end;

implementation
{$R *.dfm}
procedure TFrm_Base.UserGroupBtnHint(Sender: TObject);
begin
ShowMessage('Hello');
end;

然后新增一个窗体(从上面的窗体继承生成)
在OnCreate时就有的选了:)
 
多人接受答案了。
 
后退
顶部