如何在Delphi中共享功能?

时间:2013-04-20 03:57:54

标签: delphi delphi-7

例如,我为我的表单编写了几个函数。现在,我需要另一种形式的完全相同的功能。那么,我如何在两种形式之间分享它们呢?如果可能的话,请提供一个简单的例子。

2 个答案:

答案 0 :(得分:12)

不要把它们放在你的表格中。将它们分开并将它们放在一个公共单元中,然后将该单元添加到需要访问它们的uses子句中。

这是一个快速示例,但您可以看到许多Delphi RTL单元(例如,SysUtils)执行此操作。 (您应该学会使用Delphi中包含的VCL / RTL源代码和演示应用程序;他们可以比在此等待答案更快地回答您发布的许多问题。)

SharedFunctions.pas:

unit 
  SharedFunctions;

interface

uses
  SysUtils;  // Add other units as needed

function DoSomething: string;

implementation

function DoSomething: string;
begin
  Result := 'Something done';
end;

end.

UnitA.pas

unit
  YourMainForm;

uses
  SysUtils;

interface

type
  TMainForm = class(TForm)   
    procedure FormShow(Sender: TObject);
    // other stuff
  end;

implementation

uses
  SharedFunctions;

procedure TMainForm.FormShow(Sender: TObject);
begin
  ShowMessage(DoSomething());
end;

end.

在Delphi的最新版本中,您可以在record中创建函数/方法:

unit
  SharedFunctions;

interface

uses
  SysUtils;

type
  TSharedFunctions = record
  public
    class function DoSomething: string;
  end;

implementation

function TSharedFunctions.DoSomething: string;
begin
  Result := 'Something done';
end;

end;

UnitB.pas

unit
  YourMainForm;

uses
  SysUtils;

interface

type
  TMainForm = class(TForm)   
    procedure FormShow(Sender: TObject);
    // other stuff
  end;

implementation

uses
  SharedFunctions;

procedure TMainForm.FormShow(Sender: TObject);
begin
  ShowMessage(TSharedFunctions.DoSomething());
end;

end.

答案 1 :(得分:1)

如果您需要表格。您可以使用继承的表单。创建一个继承父表单功能的表单。

最有趣的。父表单中的任何更改都会反映为继承表单的更改。你甚至可以继承表单控件(tbutton,tlabel等......)。

在GUI Delphi7中。选项“新表格”,选项“从现有表格继承”。

示例:

//MainForm.pas
type
  TMainForm = class(TForm) 
     procedure MiFunction();
     .
     .
  end;

//ChilForm.pas
type
  TChildForm = class(TMainForm) 
  .
  .
  end;