TYPE ...END 下的VAR 主要宣告什麼? |
尚未結案
|
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
例如在Form1的TYPE ...END 下的VAR宣告變數 A: String
在Form1的public宣告變數 B: String;
Form2要使用Form1的變數,要先uses Form1
那Form2要如何使用Form1的變數呢?
您可以在Form2的Create試試下列語法
ShowMessage(A);
ShowMessage(Form1.B);
差異在那?
A變數不要加Form1但B變數要加Form1
您看一下Delphi在New一個新Form時,在TYPE ...END 下的VAR是不是都有宣告一個 Form1: TForm1;也就是在此宣告變數procedure,FUNCTION,講白一點就是與Form1同等地位。其他的Form使用這區的變數procedure,FUNCTION,不需加上Form的Name
~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/18 17:47:22
------
~小弟淺見,參考看看~ |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
引言: 例如在Form1的TYPE ...END 下的VAR宣告變數 A: String 在Form1的public宣告變數 B: String; Form2要使用Form1的變數,要先uses Form1 那Form2要如何使用Form1的變數呢? 您可以在Form2的Create試試下列語法 ShowMessage(A); ShowMessage(Form1.B); 差異在那? A變數不要加Form1但B變數要加Form1 您看一下Delphi在New一個新Form時,在TYPE ...END 下的VAR是不是都有宣告一個 Form1: TForm1;也就是在此宣告變數procedure,FUNCTION,講白一點就是與Form1同等地位。其他的Form使用這區的變數procedure,FUNCTION,不需加上Form的Name ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/18 17:47:22什麼情況要在TYPE宣告OR在TYPE END之後VAR宣告? VAR 宣告為何不在TYPE 的PUBLIC宣告 |
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
在TYPE宣告情況,如Justmade所言:
簡單來說,與在 Type 宣告的物件 (object) 有直接關係的,或在程序中要使用該物品其他變數/程序的,就應在物件宣告之中。 至於什麼情況在TYPE END之後VAR宣告?
這就要講到變數的生命週期。
在TYPE END之後VAR宣告的生命週期是到Application.Terminate也就是整個應用程式結束時才結束。
而在Public宣告的生命週期是該Form Close掉就結束。
不知這樣您清楚嗎?
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
引言: 在TYPE宣告情況,如Justmade所言: 簡單來說,與在 Type 宣告的物件 (object) 有直接關係的,或在程序中要使用該物品其他變數/程序的,就應在物件宣告之中。 至於什麼情況在TYPE END之後VAR宣告? 這就要講到變數的生命週期。 在TYPE END之後VAR宣告的生命週期是到Application.Terminate也就是整個應用程式結束時才結束。 而在Public宣告的生命週期是該Form Close掉就結束。 不知這樣您清楚嗎? ~小弟淺見,參考看看~ 若是A程式有use此Form,是否繼承此Form的TYPE END之後VAR宣告的生命週期也是整個應用程式結束時才結束嗎?Public宣告亦是相同嗎? |
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 若是A程式有use此Form,是否繼承此Form的TYPE END之後VAR宣告的生命週期也是整個應用程式結束時才結束嗎?Public宣告亦是相同嗎?您的意思是指: 假設目前有三個Form,分別為Form1,Form2,Form3 Form2繼承Form1,Form1 uses Form3 Form2要使用Form3的TYPE END之後VAR宣告的變數及Public區的變數 雖然Form1有uses Form3,而Form2繼承Form1, 但Form2要使用Form3的TYPE END之後VAR宣告的變數及Public區的變數 也要uses Form3才可以使用 所以這種情況,變數的生命週期與我上一篇講的一樣,所以您的問題: 若是A程式有use此Form,是否繼承此Form的TYPE END之後VAR宣告的生命週期也是整個應用程式結束時才結束嗎?是的 Public宣告亦是相同嗎?是的Form結束就結束 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
use 其實不是 use 一個 form 而是 use 一個 unit (即是由 unit Unit1 到尾的 End.) 一個 Unit 可以有很多東西,可以只能一個 Form,可以一個 Form 很多別的物件 一些獨立程序/變數 (就是在 var 下那些),也可以沒有 Form 而單是其他物件/程序/變數 當使用了一個 unit, 就可以使用該 unit 在 var 下定義了的物件/功能/變數, 物件和附屬於物件的程序變數是要先 create 物件才可使用,物件 Free 了就不能再使用, 獨立程序/變數則隨時可用。 以一個 TForm 物件來說,定義在他的 public 的程序是要在 create 該 Form 後, 關掉該 Form 前才可以使用,但獨立程序/變數則隨時可用。 其實,物件導向或整個語言架構的慨念不是問一兩個問題就可以明白的,若沒有基礎根基而要明白較深入的問題,別人即使說得再詳細沒根基也是很難找著要點。若能配合看看基楚的書,有不明白拿別人的說明跟書中所讀一對應,就容易明白了。
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |