请教可以将需要动态创建的FORM与FORM上的BUTTON等做在一个类里面,需要时只要CREAT就可以?谢谢(100分)

  • 主题发起人 主题发起人 bcahz
  • 开始时间 开始时间
当然可以,你创建的每个Form都是一个类,其中包含所有Form上的控件。
 
没有问题。
在构造函数中该创建的创建,
在析构函数中该释放的释放
 
诸位,请举个实例好吗?谢谢
 
没有必要举例子吧,你的每一个 TFormXXXX 都是一个允许包含控件的 Class 。
 
不过做类很少要选折TFORM作为基类
***********************
unit Unit2;

interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
tmyform = class(TComponent)
frm :tform;
firstbutton:tbutton;
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
procedure show;
end;
implementation

{ tmyform }

constructor tmyform.Create(AOwner:TComponent);
begin
inherited Create(AOwner);

frm:=TForm.Create(Application);
frm.AutoScroll:=false;
frm.Hide;

firstbutton := tbutton.create(nil);
firstbutton.parent := frm;
firstbutton.Left := 23;
firstbutton.Top := 90;
end;

procedure tmyform.show;
begin
frm.ShowModal;
end;

destructor tmyform.Destroy;
begin
frm.free;
firstbutton.Free;
inherited Destroy;

end;

end.
***************************

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,unit2;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
myfirstform:tmyform;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
myfirstform := tmyform.Create(self);
myfirstform.show;
end;

end.
 
unit UFormclass;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TMyform =class(tform)
// button1:tbutton;
// memo1:tmemo;
end;
var
Form1: TForm1;
myform1:tform;
mybutton1:tbutton;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
myform1:=tform.Create(application);
// myform1.parent:=self;
myform1.formstyle:=fsNormal;
mybutton1:=tbutton.create(myform1);
mybutton1.visible:=true;
mybutton1.enabled:=true;
mybutton1.parent:=myform1;
myform1.show;
// application.sleep(200);
//sleep(2000);
// myform1.free;
// myform1:=nil;
end;

end.
在这里将 myform1:tform;改为MYFORM1:TMYFROM;再CREATE就不行,报:
resource tmyform not found!
请教,谢谢!
 
谢谢zhengzhijia,我实验了你的程序,释放时报地址错,请教?
 
原来需要在适当的地方加 myfirstform.free;
zhengzhijia,接分!THANKS
但我还有一个问题:我不知道怎么结束这个问题:-)
你有时间可以看看531361,送分题

 
我想在FIRSTBUTTON按下后释放MYFORM类的实例及其占有的资源,应该怎么办?
 
接受答案了.
 

Similar threads

后退
顶部