发信人: liudq()
整理人: windfire(2000-12-05 20:06:27), 站内信件
|
发信人: icefh (冰原)
信 区: RAD
标 题: Delphi的Tips(三)
发信站: '紫金飞鸿' (Fri May 1 11:34:44 1998) , 转信
我在用Delphi做程序时, 碰到这样一个问题, 就是有若干个Form在OnCreate 事件里
具有相同的代码, 每次都要写一遍, 很是麻烦,后来我就将这段代码写成了一个 公用
的Procedure, 这似乎是解决了问题,不过要在每一个Form的OnCreate事件里面都
要写句话来调用这个Procedure, 还是麻烦。现在,我想出了一个好办法
实现这个方法并不难,让我们从Form谈起,在Delphi里,每建一个Form,
它都是从Tform这个类继承下来的,OnCreate事件就是发生在执行构造函数
以后,我的方法就是让我自己的代码执行在Form的构造函数执行之后,
OnCreate事件发生之前,注意:让它自动执行,这样,我们就不用写那些
重复的代码了,具体实现的办法是创建一个新类TMyForm, 让它继承自Tform
在执行完构造函数后,让它执行自己的代码,然后修改所有需要执行这段
代码的Form,让它继承自我们建的TMyForm就行了
首先,建一个公用的Unit, 我通常把它命名为u_global.pas
unit U_global;
interface
uses SysUtils,classes,inifiles,forms,
StdCtrls,explbtn,controls,DB,wwDBComb,DBTAbles;
type
TMyForm = class (TForm)
protected
constructor Create(Aowner: TComponent); override;
end;
implementation
constructor TMyForm.Create(Aowner: TComponent);
var
i:integer;
begin
inherited Create( AOwner );
with self do begin
for i := 0 to ComponentCount-1 do begin
if (Components[i] is TButton) then
(Components[i] as TControl).Cursor := 1;
If Components[i] is TLabel then begin
Tlabel(Components[i]).autosize:=false;
Tlabel(Components[i]).autosize:=True;
end;
end;
end;
end;
然后, 将原来Form中的从TForm继承改为从TMyForm继承,就象这样
type
TForm1 = class(TMyForm)
.......
--
/\
我在冰雪原中 // /\ \\
跋涉 / / / | \ \ \
远方的路啊 /^^^^--冰原--^^^^\
在哪里? /__________________\
※ 来源:·紫金飞鸿 bbs.njupt.edu.cn·[FROM: 202.119.236.104]
---------------------------------------------------------------------- ----------
[返回首页] [分类讨论区] [全部讨论区]
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.167.200]
|
|