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