線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:538
推到 Plurk!
推到 Facebook!

窗体构造

尚未結案
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-17 22:13:50 IP:222.183.xxx.xxx 未訂閱
大大好: 我想问一个问题,就是在窗体的构造中我们一般都是 var form1:TForm1; form1:=Tform1.creat(self);  //self一般是TWincontrol 派生的对象 如果现在我要从TForm1派生一个新的窗体TForm2,form2的生命周期由一个新类控制,请问能修改构造函数的参数进行设置吗?     
 
type
TMyOwner=class(TObject)
end;    type
  TForm2 = class;
  TForm1 = class(TForm)
    Button1: TButton;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public 
    procedure showmsg;      end;      Tform2 = class(TForm1)
  private
   FMyOwner:TMyOwner;
  public
//*************************************************
//自己写一个构造函数,不仅创建该派生的窗体,而且确定了新的一个宿主类?
constructor create(AOwner:TMyOwner);???    //    constructor create(AOwner: TComponent); override;
//    procedure init(myowner:TMyOwner);
  end;
多学、多问、多思考
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-17 23:17:51 IP:218.94.xxx.xxx 未訂閱
我想问一个问题,就是在窗体的构造中我们一般都是 var form1:TForm1; form1:=Tform1.creat(self); //self一般是TWincontrol 派生的对象 如果现在我要从TForm1派生一个新的窗体TForm2,form2的生命周期由一个新类控制,请问能修改构造函数的参数进行设置吗? ==================================================== 这个当然可以,这个和类的实现基本相同的原理 如下举例: [code] unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TMyForm = class(TForm) private { Private declarations } public constructor Create(AOwner: TComponent;MyCaption:string); { Public declarations } end; var MyForm: TMyForm; implementation {$R *.dfm} constructor TMyForm.Create(AOwner: TComponent; MyCaption: string); begin inherited create(AOwner); self.Caption :=MyCaption; end; end. [code] procedure TForm1.BitBtn1Click(Sender: TObject); var aF,bF: TMyForm; begin aF:=TMyForm.Create(nil,'One'); aF.Show ; bF:=TMyForm.Create(nil,'Two'); bF.Show ; end; 發表人 - sos_admin 於 2004/07/17 23:20:05
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-18 16:47:38 IP:222.183.xxx.xxx 未訂閱
多谢大大启发!!  
 
type
  TMyForm = class;
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    aF, bF: TMyForm;
  end;      TMyForm = class(TForm1)
  private
{ Private declarations }
  public
    constructor Create(AOwner: TComponent; MyCaption: string);
{ Public declarations }
  end;
var
  Form1: TForm1;    implementation    {$R *.dfm}    { TMyForm }    constructor TMyForm.Create(AOwner: TComponent; MyCaption: string);
begin
  inherited create(AOwner);
  self.Caption := MyCaption;
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  aF := TMyForm.Create(nil, 'One');
  aF.Show;
  aF.Button2Click(nil); 
end;
//当我点击af窗体上的button2时候,程序执行TForm1.Button2Click部分,但是af(=af.af)显示为nil,没有做释放动作
我想问大大们在派生的类里面怎么区分与基类中published部分一样的部分?    procedure TForm1.Button2Click(Sender: TObject);
begin
  if assigned(af) then
    af.Free;
end;
系統時間:2024-05-16 22:34:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!