請問有關record Type 的問題 |
尚未結案
|
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
unit Unit1 interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, const NUll_TYPE = -1; type BK_Record = record REC_NO : Integer; KVU_Rec_No : String; UNIT_ID : String; Clear : Procedure CL(); <---- 1 END; .. . . private Procedure CL(); <--- 2 Procedure ABC(IN:BK_Record); <----3 . . Public . . . implementation {$R *.DFM} . . . Procedure TForm1.CL(); <--- 4 begin . . end; end.我的問題是請問大大這樣的做法有可能嗎? 我想在 record type 裡加一個procedure 但因為那個procedure 宣告又在後面 那個record type 又會被另外一個的procedure call 所以又不能在 public 之後才宣告 請問有directive 可以做嗎? forward 的directive 可以用嗎??是用在這裡嗎? 謝謝大大 |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
|
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
是這樣嗎?
type BK_Record = record REC_NO : Integer; KVU_Rec_No : String; UNIT_ID : String; Clear : TNotifyEvent ; END; private procedure A(); procedure B(); procedure TForm1.A(); var BK : BK_Record; begin BK.Clear := B(); end; procedure TForm1.B(); begin end; |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
to SamSam1230:
我想你必需先對delphi的procdural type有個瞭解.Delphi允許你為procedure定義成一種型態,如此,
你就可以把一個procedure當成是變數來使用.而所謂的procdural type,其實就是定義一個procedure,會有那些參數,而不是定義procedure的名稱.
舉個簡單的例子,Delphi裡最常用的procdural type之一就是,就是TNotifyEvent,其宣告如下:
type TNotifyEvent = procedure(Sender: TObject) of object;所以,凡是物件裡有procedure其參數為(Sender:TObject)的,就可以說他是TNotifyEvent. 例如TButton.OnClick就是一個TNotifyEvent,只要你在物件裡有宣告這種參數的procedure,那麼這個 procedure就可以給TButton1.OnClick呼叫. 回到你的問題:你的Clear是Procedure CL()(指在record裡的宣告),這當然不對,而宣告成TNotifyEvent對不對,就問你了. 如果你原來CL的參數就是Sender:TObject,那麼就沒有錯,如果不是,那麼你就要另外宣告一個procedureal type,其參數為你原來規劃給CL的參數. 這樣了解嗎? 建議你可以在delphi 的 online help上搜尋 "Procedural types",參考相關的說明. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |