係Object 或是 Class? |
尚未結案
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
我想問下:
TForm 係一個class定係一個object?
咁
TFormClass 係咪一個class呢?TFormClass它什麼都不是,只是一個表示式 因為:
type
TForm1 = class(TForm) //TForm1是繼承自TForm的Class
.....
var
Form1: TForm1;//Form1是TForm1的Object 但
fm := FormClass.Create(Self); // fm、FormClass 是通用表示,你應以實際的Object Name及Class Name 代換 如下:
Form1 := TForm1.Create(Application);// 建立Form1為TForm1這種類別的物件
如此說明,可以瞭解吧!
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
function TForm1.CreateUniqueForm(FormClass:TFormClass):TFormclass;
var
i : integer;
Fm : TForm;
begin
fm := nil;
for i := 0 to Screen.FormCount - 1 do
if Screen.Forms[i] is FormClass then
begin
Fm := Screen.Forms[i];
if Fm.WindowState = wsMinimized then
Fm.WindowState := wsNormal;
Fm.BringToFront;
end;
if not assigned(fm) then
fm := FormClass.Create(Self);
fm.Show;
result := TFormClass(Fm);
end; function TForm1.CreateUniqueForm(fmName: string):TFormclass;
begin
Result := TFormClass(FindClass(fmName));
try
try
CreateUniqueForm(Result);
except
on E:Exception do
ShowMessage(E.Message);
end;
except
ShowMessage(fmname ' ©|¥¼«Ø¥ß');
end;
end; 就是這個code有點不太明白,在那裏跑出了TFormClass,它又不是TForm這個class...
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: function TForm1.CreateUniqueForm(FormClass:TFormClass):TFormclass; ... function TForm1.CreateUniqueForm(fmName: string):TFormclass; 就是這個code有點不太明白,在那裏跑出了TFormClass,它又不是TForm這個class...BorlandUser 你好 TFormClass 是個真實的類別名稱(前面會寫為表示式,是因為資訊不足,造成判斷錯誤,以為是一般溝通上Form Class 的代表),但宣告在那裏?相同單元或另外uses的單元檔,你可利用Delphi的搜尋功能,一定可以找到的。 |
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 另外想問create(self),create()和create(application)有咩分別?BorlandUser 你好 參考以下各篇 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=42933 http://delphi.ktop.com.tw/topic.php?topic_id=40114 http://delphi.ktop.com.tw/topic.php?topic_id=33289 |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 我找到TFormClass是在unit Forms,它是.. TFormClass = class of TForm (TFormClass 泛指繼承自TForm類別的類別) 那麼這句的意思是什麼?我看了help還是有點不明白,好像TFormClass 和 TForm兩者都是全完一樣的東西,只是名稱不同,情況和 type TForm1 = class(TForm)一樣,TForm1 inherit 了 TForm,如果 TForm1 不修改其 procedure/function,那麼它與TForm 是沒有什麼分別的? (其間好像沒什麼差別,或許只是讓程式碼容易閱讀吧!這部份我不知如何表達了,是否有高人可以指點一二?)BorlandUser 你好 |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
引言: 跟據oop定理/像c 般..TForm can be say a base class of all Form that inherit from TFrom,但是有故意整一個名為 TFormClass 為何呢? 這樣做是否多剩了呢?如果不用TFormClass,而改用TForm,那麼是否也做到同一樣的效果呢?轉貼DELPHI HTLP type TControlClass = class of TControl; function CreateControl(ControlClass: TControlClass; const ControlName: string; X, Y, W, H: Integer): TControl; begin Result := ControlClass.Create(MainForm); with Result do begin Parent := MainForm; Name := ControlName; SetBounds(X, Y, W, H); Visible := True; end; end; |
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
轉貼DELPHI HTLP
type TControlClass = class of TControl; function CreateControl(ControlClass: TControlClass; const ControlName: string; X, Y, W, H: Integer): TControl; begin Result := ControlClass.Create(MainForm); with Result do begin Parent := MainForm; Name := ControlName; SetBounds(X, Y, W, H); Visible := True; end; end; CreateControl(TEdit,'Edit',0,0,100,10); |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
bbtw
一般會員 發表:2 回覆:31 積分:16 註冊:2003-07-11 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
BorlandUser 你好
假設有以下兩函式宣告,先不管其用途為何:
1. Function Test1(FormClass: TFormClass):TFormClasee ;
2. Function Test2(Form: TForm):TForm;
在單元檔中有個Form
Var
Form1 : TForm1 ;
那麼要如何呼叫這兩個函式呢
1.SomeVar := Test1(TForm1); // 傳入類別
Test1接收到TForm1後它可以依據TForm1來建立物件
2.SomeVar := Test2(Form1); // 傳入物件
Test2接收到Form1後它不能用Form1來建立物件,因為Form1本身就是物件,只能對Form1做屬性、方法、事件的存取。
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |