我有一个名为eventsobj的对象。在其中一个过程中,它将一些动态图像绘制到表单上。到目前为止它的作用。然而,为了整洁,因为我的老师告诉我,我的对象是在一个单独的单位。
我理想的是,对象有一个返回TForm的函数,然后我将设置为主窗体。 在我的另一个部门:
Function drawNewForm(numberOfImages : integer) : TForm1;
以我的主要形式:
NewForm := TForm1.create;
NewForm := drawNewForm(10);
CurrentForm := newform;
对不起,这很模糊,但我需要的是原则,不一定是代码。 当我尝试这几行时,当前的形式根本没有改变。
提前感谢您的帮助。
答案 0 :(得分:0)
如果您只是将所有内容(包括表单)移动到新单元,我认为您的老师不会满意......您也可以重命名该单元。呵呵呵。
我相信你老师的意思是你的eventsobj类应该在另一个单元中,你应该在主表单中实例化它。你会有这样的事情:
YourNewUnit.pas:
unit YourNewForm;
...
type
TYourClass = class(...)
...
MainForm.pas:
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, YourNewUnit;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
with TYourClass.Create(Self) do begin
Parent := Self; //If needed...
//Other initialization stuff
end;
end;
如果您需要稍后在代码上调用它,您还可以在表单上创建一个私有字段来保存对TYourClass
实例的引用。这看起来像这样:
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, YourNewUnit;
type
TForm1 = class(TForm)
private
FYourClass: TYourClass;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
FYourClass := TYourClass.Create(Self);
with FYourClass do begin
Parent := Self; //If needed...
//Other initialization stuff
end;
end;