4

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

4

2 回答 2

14

不要把它们放在你的表格中。将它们分开并将它们放在一个公共单元中,然后将该单元添加到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.

单位A.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 7 更新的 Delphi 版本中,您可以在 a 中创建函数/方法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;

单位B.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.
于 2013-04-20T04:13:32.550 回答
1

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

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

在 GUI Delphi7. 选项“新形式”,选项“从现有形式继承”。

例子:

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

//ChilForm.pas
type
  TChildForm = class(TMainForm) 
  .
  .
  end;
于 2013-04-20T14:58:21.573 回答