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

關于Templates的用法

尚未結案
donlly
一般會員


發表:45
回覆:73
積分:23
註冊:2004-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-14 17:26:04 IP:219.131.xxx.xxx 未訂閱
我想用form1中的button1來Create Component Template,然后在其他form使用它,當我改動它的大小 ,圖片,事件的時候,其他能够一起改动,這樣做可以嘛?如果不可以,有什么方法?
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-14 19:00:01 IP:220.130.xxx.xxx 未訂閱
我想在做法上你可以先建立一個Form Templete,然後在產生新的Form時,自此Form Templete 繼承下來,如此當你改變Form Templete 上的元件屬性,例如Button,則所有自此Form Templete 繼承下來的Form上的元件將同時會被改變.
donlly
一般會員


發表:45
回覆:73
積分:23
註冊:2004-11-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-15 11:14:11 IP:219.131.xxx.xxx 未訂閱
unit Unit2;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,UDBFormWizard;    type
  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form2: TForm2;    implementation
   uses unit1;
{$R *.dfm}    procedure TForm2.Button2Click(Sender: TObject);
var 
   OneBtn:Tbutton;
begin 
    OneBtn:=form1.Button1.Create(application);
    OneBtn.Parent:=form2;
  end;    end.
我已經試過,OneBtn可以繼承form1中的button1的事件,但是有錯誤,如圖,為什么? 而且OneBtn的大小與button1不一樣,為什么謝謝 發表人 - donlly 於 2004/12/15 12:30:51
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-15 13:14:47 IP:220.130.xxx.xxx 未訂閱
 
procedure TForm2.Button2Click(Sender: TObject);
var 
  OneBtn:Tbutton;
begin 
  OneBtn:=form1.Button1.Create(application);//這種寫法是不對的,這樣並不代表OneBtn是繼承自from1.Button1
  OneBtn.Parent:=form2;
end;    
我想你應該弄清楚什麼是Class,什麼是Class的Instance; 這樣來說吧,我們定義一個Class(如TForm1)只是定義一種資料型態, 而實際產生物件則是必須藉由定義好的Class透過Create的動作,在記憶體中實際配置記憶體,然後Class的特性會被填入這個位置,最後指向這個記憶體位置的指標會被傳回. OneBtn := TButton.Create(Self); TButton.Create(Self)的動作就是Class TButton 透過它的 Create Method 實際在記憶體中產生一個TButton物件(Instance),而回傳的指標則在OneBtn這個物件指標保存下來. 舉例來說,我們刻好一個印章(Class),然後可以用來在需要的地方蓋上印記(Instance),通常我們應該不會用蓋好的印記再去蓋成另一個印記吧! 我要說的是產生實際物件應該透過Class而不是Instance.
donlly
一般會員


發表:45
回覆:73
積分:23
註冊:2004-11-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-15 13:32:33 IP:61.145.xxx.xxx 未訂閱
hi,jow,謝謝,完全明白! 發表人 - donlly 於 2004/12/15 13:34:52
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-15 13:37:23 IP:220.130.xxx.xxx 未訂閱
另外說說繼承..
 
  TMyButton = class(TButton)
  protected
    ...
  public
    ...
  end;
你應該在這裡改寫TMyButton有別於TButton的特性.
系統時間:2024-05-17 13:27:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!