将TForm / form作为参数传递给动态创建的图像

时间:2014-04-10 17:35:11

标签: delphi delphi-2010

我有一个名为eventsobj的对象。在其中一个过程中,它将一些动态图像绘制到表单上。到目前为止它的作用。然而,为了整洁,因为我的老师告诉我,我的对象是在一个单独的单位。

我理想的是,对象有一个返回TForm的函数,然后我将设置为主窗体。 在我的另一个部门:

    Function drawNewForm(numberOfImages : integer) : TForm1;

以我的主要形式:

    NewForm := TForm1.create;
    NewForm := drawNewForm(10);
    CurrentForm := newform;

对不起,这很模糊,但我需要的是原则,不一定是代码。 当我尝试这几行时,当前的形式根本没有改变。

提前感谢您的帮助。

1 个答案:

答案 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;