Delphi 将TForm/form作为参数传递,并在其上动态创建图像
我有一个叫做eventsobj的对象。在它的一个过程中,它在一个窗体上绘制了一些动态图像。到目前为止,它是有效的。然而,为了整洁,因为我的老师告诉我,我的目标是在一个单独的单元 理想情况下,我希望对象有一个返回TForm的函数,然后将其设置为主表单。 在我的另一个单位:Delphi 将TForm/form作为参数传递,并在其上动态创建图像,delphi,delphi-2010,Delphi,Delphi 2010,我有一个叫做eventsobj的对象。在它的一个过程中,它在一个窗体上绘制了一些动态图像。到目前为止,它是有效的。然而,为了整洁,因为我的老师告诉我,我的目标是在一个单独的单元 理想情况下,我希望对象有一个返回TForm的函数,然后将其设置为主表单。 在我的另一个单位: Function drawNewForm(numberOfImages : integer) : TForm1; 以我的主要形式: NewForm := TForm1.create; NewForm :
Function drawNewForm(numberOfImages : integer) : TForm1;
以我的主要形式:
NewForm := TForm1.create;
NewForm := drawNewForm(10);
CurrentForm := newform;
对不起,这是含糊不清的,但我需要的是原则,不一定是代码。
当我尝试这几行时,当前的表单根本没有改变
提前感谢您的帮助。如果您只是将所有内容(包括表格)移到一个新单元,我认为您的老师不会满意。。。你也可以重新命名这个单位。呵呵 我相信你的老师的意思是,你的eventsobj类应该在另一个单元中,你应该以你的主要形式实例化它。你会有这样的想法:
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;
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;
谢谢你的帮助。我明白为什么我现在必须使用第二个装置了。但是,我在哪里创建图像?(Main form或newunit)我之所以问这个问题,是因为我的对象应该创建images@user3457105如果我理解的很好,这些图像属于你的新对象。因此,您必须在其中创建图像。您的对象应该是自包含的。如果你想在另一种形式(甚至是另一个应用程序)中使用同一个对象,它应该可以工作。哦,我明白了。如何保存图像?TImage?@user3457105数组如果您希望图像内置在可执行文件中,您可能应该将其添加到应用程序资源中并加载到object creator上。。。这是一个不同的问题,如果你对那个部分有问题,你应该打开一个新的。好的。谢谢你的帮助,加布里埃尔!