程序中有些事件几个窗体都用到。我想写在一个公用的单元里面其它单元调用这个单元就可以了。怎么创建,我在工程中创建了一个单元但是把事件写上去就会报错。

解决方案 »

  1.   

    公用窗体先要被其他窗体引用,另外事件方法要是public,最后公用窗体的事件不是直接被调用的,而是赋给你窗体的事件,由你窗体来调用,具体可以看这里
    http://www.cnblogs.com/sclsch/archive/2009/05/25/1487594.html
      

  2.   

    接以下方式即可
    {****************************************************************************************
          全局使用到的函数/过程 被定义为类方法,在调用时不需要类的实例
          例如
            TJTH.ShowErrorMsg('保存成功','错误提示');
           即可;
            TJTH 的所有函数执行结果:
             1):失败为False;
             2):成功为True;
    *****************************************************************************************}unit FunctionUnit;interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls, Db, ADODB, ComCtrls, inifiles, TypInfo;
    const
      sError = '错误提示...';
      sHint = '提示...';type
      TJTH = class
        { 显示错误提示对话框}
        class function ShowErrorMsg(msg, Caption: string): boolean;
        {判断字符串是否数字}
        class function IsNumeric(Data: string): boolean;
      end;implementation//uses MainFrm;
    //判断字符串是否数字class function TJTH.IsNumeric(Data: string): boolean;
    var i, code: integer;
    begin
      try
        StrToFloat(data);
        //result := true;
      except
        result := false;
      end;
    end;{*************************显示错误提示对话框*****************************************}class function TJTH.ShowErrorMsg(msg, Caption: string): boolean;begin
      MessageBox(GetActiveWindow, Pchar(msg), PChar(Caption), MB_ICONERROR +
        MB_OK);
      Result := True;
    end;
    {************************************************************************************}
    initializationfinalizationend.
      

  3.   

    1.file->new->unit 新建unit2
    2.interface下面加放要引用的单元,比如什么uses Windows, Messages, SysUtils,之类的
    3.接着,写上过程/函数的声明
    4.implementation下面就写过程/函数的实现部分
    5.其它窗体/单元在implementation下面引用unit2, 这样就可以使用unit2中的东东了简单的就像这样子:
    unit Unit2;interface
     uses Dialogs; procedure xx(yy:string);implementationprocedure xx(yy:string);
    begin
      showmessage(yy);
    end;end.{窗体中:}
    ...
    var
      Form1: TForm1;implementation uses unit2;{这里引用/或者在interface下面的uses引用}{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
       xx('Hello !');
    end;end.