全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:992
推到 Plurk!
推到 Facebook!

一個function要放在form的哪裡,才能讓其它 form來呼叫並傳值?

尚未結案
seedbcc
高階會員


發表:232
回覆:272
積分:105
註冊:2003-12-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-08 11:29:05 IP:221.169.xxx.xxx 未訂閱
如題  我把下列的function 放在
    unit...
interface
uses
type
 TsystemSet = class(form)
 procedure .........
 procedure .........
 private..
 protected...
 public ...
 procedure .........
function GetDirFile(ACategory:String;AFileType:String;AFileID:String):Variant;
var ...    implementation    uses Unit1;    function TSystemSet.GetDirFile(ACategory:String;
  AFileType:String;AFileID:String):Variant;
begin
  LkCategory:=ACategory;   //判斷為<0系統>、或是 <1目錄>  還是 <2檔案>
  if LkCategory='2' then   //若為<檔案>,判斷是(計量),還是(計數)
  begin
    LkFileType:=StrToInt(AFileType);
  end
  else                                //若為系統或目錄,此變數無意義
  begin
    LkFileType:=10
  end;
  LkFileID  :=AFileID;            //目錄或檔案的id
end;
但另一個form 要執行什麼呼叫它
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-08 12:22:20 IP:218.80.xxx.xxx 未訂閱
要让别的FORM掉用,你应该把函数定义在PUBLIC里,在别的FORM调用这个函数就想掉用变量一样,FORM名称 函数名就可以了。
avalokita
一般會員


發表:29
回覆:35
積分:12
註冊:2003-09-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-08 13:19:56 IP:203.70.xxx.xxx 未訂閱
若Function要在許多Form中共用的話, 小弟建議獨立地把Function寫在一個Unit中, (如Delphi的Module),再引用(use) 這樣一來,對程式碼的較有更好的維護。
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-09 01:39:31 IP:203.204.xxx.xxx 未訂閱
seedbcc 你好     一般Procedure或Function存在的位置,可以用下面幾個原則來決定,底下用類別或物件而不用Form來說明,是因為Form也是一種類別,其實體也是個物件,表示這個原則是一體適用的,不限於Form。    1.與類別或物件有直接關係,且要公開給別的物件所呼者,則放在物件的Public區段,若不開放給別的物件使用者,則放在Private區段。 在程序或函式內會使用到該類別或物件的成員屬性或方法者,表示有直接關係,使用方式:先uses 該單元檔,然後用 [unit.]xxxx.procedure(....);來呼叫 2.與類別或物件沒有直接關係但有間接關係者,則放在同個單元檔的定義區(與該類別同等地位) 在程序或函式內不會使用到該類別或物件的成員屬性或方法,但會用到該類別或物件本身者,例如呼叫該程序代為建立物件、釋放物件(一般會伴隨一些啟始設定及善後的處理),表示有間接關係,使用方式:先uses 該單元檔,然後用 [unit.]procedure(....);來呼叫 3.與類別或物別沒有特定關係者,即一般所謂的公用程序或函式,則最好分門別類放在個別獨立的單元檔中。 程序或函式內完全不會直接使用到該類別或物件者(把類別或物件當參數傳入者不算直接使用到)使用方式:先uses 該單元檔,然後用 [unit.]procedure(....);來呼叫(同第二種) ps: [Unit.]xxxxx.Procedure 其中 [unit.] : 代表可有可無的單元檔名的限定詞,限定後面的物件或類別是在該單元檔中定義的 xxxxx : 代表別或物件的名稱 Procedure :代表Procedure 或Function的名稱
下面表示各定義區的位置:
unit ...
interface
uses
type
  TClassName = class(TFatherClass)
    ....
    procedure .........
    procedure .........
  private..
  protected...
  public
    第一種程序定義區
  End;
  第二種程序定義區
  Procedure ProcName(....);
  Function FuncName(......):...;var ;    implementation
.....    第三種與第二種是同樣的位置,只是它是在另一個單元檔而已
以你提供的範例來說,Function內部與Form的成員屬性等並無使用關係且與Form本身也沒直接關係,因此它適合放在另一個與它同類的單元檔中(公用函式)。 發表人 - chance36 於 2004/07/09 01:53:16
系統時間:2024-06-29 17:39:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!