精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>其他>>Delphi的Tips(三)(转载)

主题:Delphi的Tips(三)(转载)
发信人: 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]

[关闭][返回]