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

SetFieldEvent 事件是在那?如何判斷程式事件是自己寫的?

答題得分者是:channel
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-12 11:50:22 IP:203.69.xxx.xxx 未訂閱
1:SetFieldEvent 事件是在那?如何判斷程式事件是自己寫的? 還是物件本來就捉供 2:FormCreate是要做什麼? 3:一個程式的跑的流程是如何run...大概--->delphi程式 1: procedure MqyCalcFields(DataSet: TDataSet); procedure SetFieldEvent; procedure FormCreate(Sender: TObject); 順序顛倒對程式run有差別嗎? 2:什麼procedure 要在type宣告? 什麼procedure要在private宣告? 什麼procedure要在public宣告? 例: use .... interface ... type TFm1 = class(TfEdit) MqyEMPLYID: TStringField; MqyATNNO: TStringField; Label1: TLabel; DBEdit1: TDBEdit; DBEdit2: TDBEdit; Label2: TLabel; DBEdit3: TDBEdit; Mqy_pickEMPLYID: TStringField; Mqy_pickATNNO: TStringField; Mqy_pickEMPLYNM: TStringField; MqySTATUS: TStringField; Label3: TLabel; DBEdit4: TDBEdit; procedure MqyCalcFields(DataSet: TDataSet); procedure SetFieldEvent; procedure FormCreate(Sender: TObject); private ....... public procedure OpenPick; override; end; implementation
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-12 13:36:35 IP:211.72.xxx.xxx 未訂閱
引言: 1:SetFieldEvent 事件是在那?如何判斷程式事件是自己寫的? 還是物件本來就捉供
這應該是自己寫的。 如何判斷: 一般Delphi的事件都會在事件加上物件的名稱例: 您有一個TQuery,名稱是Query1,其事件onBeforeOpen的宣告為: procedure Query1BeforeOpen(DataSet: TDataSet);
引言: 2:FormCreate是要做什麼?
當Form一開啟時,首先執行的就是FormCreate這個事件,接著是FormShow,再來是FormActivate,您可以作如下的測式。如果您不知程式跑的流程可以用ShowMessage的方式來測試。
procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage('FormCreate');
end;    procedure TForm1.FormShow(Sender: TObject);
begin
  ShowMessage('FormShow');
end;    procedure TForm1.FormActivate(Sender: TObject);
begin
  ShowMessage('FormActivate');
end;
引言: 3:一個程式的跑的流程是如何run...大概--->delphi程式
程式一開始會從Program Project開始執行,再進入您開始的第一個From 如何看Program Project,您可以從Delphi Menu中的Project\View\Source開始 如下範例如下:
program Project1;    uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};    {$R *.RES}    begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
您可以將中斷點設在Application.Initialize;當程式一Run時,就是進來這裡。
引言: 1: procedure MqyCalcFields(DataSet: TDataSet); procedure SetFieldEvent; procedure FormCreate(Sender: TObject); 順序顛倒對程式run有差別嗎?
這些procedure順序顛倒對程式run沒有影響,在此只是作宣告。
引言: 2:什麼procedure 要在type宣告? 什麼procedure要在private宣告? 什麼procedure要在public宣告?
在Type中宣告,其實是在interface底下宣告,是屬於Globle,全域變數。 在private宣告,就是Form的私有變數 要在public宣告,就是Form的公有變數 您可以參考一本書 好書推薦:Delphi 6 Object Pascal完美經典 出版公司:金禾 價格:680元 頁數:976 優點:詳細介紹object pascal語言的運作,元件與常用指令原由,細節交代的很清楚。 信相您看了這本書之後,對Delphi的觀念會更清楚。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-12 14:15:31 IP:203.69.xxx.xxx 未訂閱
引言:
引言: 1:SetFieldEvent 事件是在那?如何判斷程式事件是自己寫的? 還是物件本來就捉供
這應該是自己寫的。 如何判斷: 一般Delphi的事件都會在事件加上物件的名稱例: 您有一個TQuery,名稱是Query1,其事件onBeforeOpen的宣告為: procedure Query1BeforeOpen(DataSet: TDataSet);
引言: 2:FormCreate是要做什麼?
當Form一開啟時,首先執行的就是FormCreate這個事件,接著是FormShow,再來是FormActivate,您可以作如下的測式。如果您不知程式跑的流程可以用ShowMessage的方式來測試。
procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage('FormCreate');
end;    procedure TForm1.FormShow(Sender: TObject);
begin
  ShowMessage('FormShow');
end;    procedure TForm1.FormActivate(Sender: TObject);
begin
  ShowMessage('FormActivate');
end;
引言: 3:一個程式的跑的流程是如何run...大概--->delphi程式
程式一開始會從Program Project開始執行,再進入您開始的第一個From 如何看Program Project,您可以從Delphi Menu中的Project\View\Source開始 如下範例如下:
program Project1;    uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};    {$R *.RES}    begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
您可以將中斷點設在Application.Initialize;當程式一Run時,就是進來這裡。
引言: 1: procedure MqyCalcFields(DataSet: TDataSet); procedure SetFieldEvent; procedure FormCreate(Sender: TObject); 順序顛倒對程式run有差別嗎?
這些procedure順序顛倒對程式run沒有影響,在此只是作宣告。
引言: 2:什麼procedure 要在type宣告? 什麼procedure要在private宣告? 什麼procedure要在public宣告?
在Type中宣告,其實是在interface底下宣告,是屬於Globle,全域變數。 在private宣告,就是Form的私有變數 要在public宣告,就是Form的公有變數 您可以參考一本書 好書推薦:Delphi 6 Object Pascal完美經典 出版公司:金禾 價格:680元 頁數:976 優點:詳細介紹object pascal語言的運作,元件與常用指令原由,細節交代的很清楚。 信相您看了這本書之後,對Delphi的觀念會更清楚。 ~小弟淺見,參考看看~
什麼是,全域變數?是指整隻程式form要用到的嗎? 私有變數是只有在些form會用到的嗎? 公有變數是什麼?
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-12 14:46:38 IP:211.72.xxx.xxx 未訂閱
引言:什麼是,全域變數?是指整隻程式form要用到的嗎? 私有變數是只有在些form會用到的嗎? 公有變數是什麼?
其實在interface底下,都是全域變數,也就是其他的Form只要uses該Form就可以使用該變數。 但是在interface type底下有區分為private及public。 private裡所宣告的變數、procedure、function均是該Form私有的,也就是其他的Form無法使用,就算uses該Form也一樣。 public裡所宣告的變數、procedure、function均是公開的,其他的Form只要uses該Form就可以使用該變數、或者是繼承該Form的子孫。 也許你會問在interface type底下及public底下宣告有何不同:我想是沒有什麼不同,只是我們習慣自己寫的變數、procedure、function若要公開時,會寫在public。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-12 15:01:54 IP:203.69.xxx.xxx 未訂閱
引言:
引言:什麼是,全域變數?是指整隻程式form要用到的嗎? 私有變數是只有在些form會用到的嗎? 公有變數是什麼?
其實在interface底下,都是全域變數,也就是其他的Form只要uses該Form就可以使用該變數。 但是在interface type底下有區分為private及public。 private裡所宣告的變數、procedure、function均是該Form私有的,也就是其他的Form無法使用,就算uses該Form也一樣。 public裡所宣告的變數、procedure、function均是公開的,其他的Form只要uses該Form就可以使用該變數、或者是繼承該Form的子孫。 也許你會問在interface type底下及public底下宣告有何不同:我想是沒有什麼不同,只是我們習慣自己寫的變數、procedure、function若要公開時,會寫在public。 ~小弟淺見,參考看看~
interface底下 protected 是做什麼?跟public底下宣告有何不同procedure、function
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-12 15:04:53 IP:203.69.xxx.xxx 未訂閱
引言:
引言:什麼是,全域變數?是指整隻程式form要用到的嗎? 私有變數是只有在些form會用到的嗎? 公有變數是什麼?
其實在interface底下,都是全域變數,也就是其他的Form只要uses該Form就可以使用該變數。 但是在interface type底下有區分為private及public。 private裡所宣告的變數、procedure、function均是該Form私有的,也就是其他的Form無法使用,就算uses該Form也一樣。 public裡所宣告的變數、procedure、function均是公開的,其他的Form只要uses該Form就可以使用該變數、或者是繼承該Form的子孫。 也許你會問在interface type底下及public底下宣告有何不同:我想是沒有什麼不同,只是我們習慣自己寫的變數、procedure、function若要公開時,會寫在public。 ~小弟淺見,參考看看~
interface底下 protected 是做什麼?跟public底下宣告有何不同procedure、function
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-12 15:13:18 IP:211.72.xxx.xxx 未訂閱
引言: interface底下 protected 是做什麼?跟public底下宣告有何不同procedure、function
protected只有繼承該Form的子孫才能使用在這區所宣告的procedure、function 幫您整理一下: private:所宣告的東東,只能自已使用。 protected:所宣告的東東,只有繼承該Form的子孫才能使用。 public:所宣告的東東,只要是uses該Form就可以使用。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-12 15:29:48 IP:203.69.xxx.xxx 未訂閱
引言:
引言: interface底下 protected 是做什麼?跟public底下宣告有何不同procedure、function
protected只有繼承該Form的子孫才能使用在這區所宣告的procedure、function 幫您整理一下: private:所宣告的東東,只能自已使用。 protected:所宣告的東東,只有繼承該Form的子孫才能使用。 public:所宣告的東東,只要是uses該Form就可以使用。 ~小弟淺見,參考看看~
繼承是否要先USES..繼承跟USES到底是什麼關係? implementation的USES跟interface的USES是什麼關係?
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-12 16:03:49 IP:61.218.xxx.xxx 未訂閱
您可以參考一本書 【本書特點】 本書最大的特色是利用程式設計實例,STEP BY STEP引導初學者,在最短的時間內,快速的學習Delphi。了解Delphi基本的程式設計,同時幫讀者建立一套自我學習程式的方法。 在本書中,作者特別強調一個快速的學習方式--『先看後找』,『先看』程式範例,當有不懂的地方,『然後再學找』程式的內容及書中的介紹。讀者不妨試試看,相信用久了,便可以隨心所欲,快速學習。另外,除了書中介紹的實例外,還包含作者在網路上Delphi電子報的內容。 本書特色: 1.利用完整的範例來教導讀者如何學習Delphi 2.告訴初學者一個快速學習Delphi的方法 3.從資料庫的設計、程式開發與Quickreport報表的實例完整介紹Ado資料庫的程式設計 4.讀者可能需要的其他小程式範例 【本書內容】 本書共包含基礎篇、資料庫篇與其他篇,內容如下: 1. 基本篇:基本Delphi環境介紹、常用的函數介紹及利用猜數字程式來告訴讀者如何設計Delphi基本的程式設計及邏輯思考 2. 資料庫篇:利用Table來設計一個Master-Detail的學生成績資料庫,並利用Quickreport元件設計並介紹報表的應用 3. 其他篇:介紹有關於Ado資料庫及其他可能需要經常使用元件(Component)的程式設計 //................ 您可以參考一本書 好書推薦:Delphi 6 Object Pascal完美經典 出版公司:金禾 價格:680元 頁數:976 優點:詳細介紹object pascal語言的運作,元件與常用指令原由,細節交代的很清楚。 信相您看了這本書之後,對Delphi的觀念會更清楚。 ~小弟淺見,參考看看~ 發表人 - QOO1234 於 2003/03/12 16:05:31
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-12 16:15:03 IP:211.72.xxx.xxx 未訂閱
引言: 繼承是否要先USES..繼承跟USES到底是什麼關係? implementation的USES跟interface的USES是什麼關係?
繼承是否要先USES:No底下有繼承的操作方法。 繼承:簡單的說就是繼承屬性、事件、方法。 Uses:故名思義就是使用。例如:Form2 uses Form1,指Form2可以使用Form1所公開的變數、procedure、function。 繼承跟USES到底是什麼關係:這是兩回事,不可混為一談。 繼承的操作方法:(您之前有問過這樣的問題)
  • 您在Delphi先開一新的Application,此時Delphi便會產生一個空白的From,您可以試著在這個Form上貼上一個Button。
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage('inherited');
    end;
    
  • 按Delphi中的Menu File/New 其中有一個Project1頁夾,在Project1頁夾會看到Form1,選擇Form1按ok即可,這個步驟就是叫您New的Form2去繼承Form1。 程式碼如下(注意紅色部份,與Form1比較):
    unit Unit2;    interface    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Unit1, StdCtrls;    type
      TForm2 = class(TForm1)
      private
        { Private declarations }
      public
        { Public declarations }
      end;    var
      Form2: TForm2;    implementation    {$R *.DFM}    end.
    
    其實你看Form1的程式碼如下:
    unit Unit1;    interface    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure proprivate;
      protected
        procedure proprotected;
      public
        { Public declarations }
        procedure propublic;
      end;    var
      Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage('inherited');
    end;    end.
    
    比較這兩行 TForm1 = class(TForm) TForm2 = class(TForm1) 其實TForm1就是繼承TForm而TForm2就是繼承TForm1。Delphi寫一個空白的表單TForm等著您新增一個Form時來繼承。所以您看到的Form2就會跟Form1一樣會有一個Button。
implementation的USES跟interface的USES是什麼關係? 如果你的Form1要uses Form2而Form2也要uses Form1 你都打在interface的USES則會有錯誤:Circular unit Reference循環使用unit 如果你改打在implementation的USES則就沒有什麼問題。 ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/12 16:21:06
------
~小弟淺見,參考看看~
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-03-12 17:10:03 IP:203.69.xxx.xxx 未訂閱
引言:
引言: 繼承是否要先USES..繼承跟USES到底是什麼關係? implementation的USES跟interface的USES是什麼關係?
繼承是否要先USES:No底下有繼承的操作方法。 繼承:簡單的說就是繼承屬性、事件、方法。 Uses:故名思義就是使用。例如:Form2 uses Form1,指Form2可以使用Form1所公開的變數、procedure、function。 繼承跟USES到底是什麼關係:這是兩回事,不可混為一談。 繼承的操作方法:(您之前有問過這樣的問題)
  • 您在Delphi先開一新的Application,此時Delphi便會產生一個空白的From,您可以試著在這個Form上貼上一個Button。
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage('inherited');
    end;
    
  • 按Delphi中的Menu File/New 其中有一個Project1頁夾,在Project1頁夾會看到Form1,選擇Form1按ok即可,這個步驟就是叫您New的Form2去繼承Form1。 程式碼如下(注意紅色部份,與Form1比較):
    unit Unit2;    interface    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Unit1, StdCtrls;    type
      TForm2 = class(TForm1)
      private
        { Private declarations }
      public
        { Public declarations }
      end;    var
      Form2: TForm2;    implementation    {$R *.DFM}    end.
    
    其實你看Form1的程式碼如下:
    unit Unit1;    interface    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure proprivate;
      protected
        procedure proprotected;
      public
        { Public declarations }
        procedure propublic;
      end;    var
      Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage('inherited');
    end;    end.
    
    比較這兩行 TForm1 = class(TForm) TForm2 = class(TForm1) 其實TForm1就是繼承TForm而TForm2就是繼承TForm1。Delphi寫一個空白的表單TForm等著您新增一個Form時來繼承。所以您看到的Form2就會跟Form1一樣會有一個Button。
implementation的USES跟interface的USES是什麼關係? 如果你的Form1要uses Form2而Form2也要uses Form1 你都打在interface的USES則會有錯誤:Circular unit Reference循環使用unit 如果你改打在implementation的USES則就沒有什麼問題。 ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/12 16:21:06
為什麼有些會有繼承會有以下..有些沒有. var Form1: TForm1; TYPE為什麼要做多個繼承; type TvalidateRec=class(TObject) Field:TField; ParentTable: string; ParentTableDisplay: string; ParentField: string; swhere: string; isKeyCode: boolean; end; TPickType=(pkDate, pkKeyCode, pkFK); TPickRec=class(TObject) Sender:TWinControl; sql: string; ResultFields: string; DescptField: string; //picktype:integer; picktype:TPickType; end;
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-03-12 17:45:48 IP:211.72.xxx.xxx 未訂閱
引言: 為什麼有些會有繼承會有以下..有些沒有. var Form1: TForm1;
這一行是宣告Form1的型態是TForm1。一般都會有。 如果你沒有這一行Form1: TForm1;也就沒有辦法使用Form1的東西,也就是當別的Form Uses Form1,沒有辦法使用Form1的變數、function、procedure…。您可以自行試試看,其差異性。
引言: TYPE為什麼要做多個繼承;
不懂您的思意! 您是指那一行?
------
~小弟淺見,參考看看~
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-03-12 18:08:35 IP:203.69.xxx.xxx 未訂閱
引言:
引言: 為什麼有些會有繼承會有以下..有些沒有. var Form1: TForm1;
這一行是宣告Form1的型態是TForm1。一般都會有。 如果你沒有這一行Form1: TForm1;也就沒有辦法使用Form1的東西,也就是當別的Form Uses Form1,沒有辦法使用Form1的變數、function、procedure…。您可以自行試試看,其差異性。
引言: TYPE為什麼要做多個繼承;
不懂您的思意! 您是指那一行?
不好意思我寫的不夠detail,thank妳回答我那麼多問題..因我是個新手 我是指我看有些TYPE有class(繼承)以下,為什麼要繼承2個? TYPE TvalidateRec=class(TObject) . . END; TDBGridF = class(TDBGrid) property FixedCols; property DefaultRowHeight; property TopRow; end;
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-03-12 18:13:28 IP:211.72.xxx.xxx 未訂閱
引言: 不好意思我寫的不夠detail,thank妳回答我那麼多問題..因我是個新手 我是指我看有些TYPE有class(繼承)以下,為什麼要繼承2個? TYPE TvalidateRec=class(TObject) . . END; TDBGridF = class(TDBGrid) property FixedCols; property DefaultRowHeight; property TopRow; end;
您是指這兩行嗎? TvalidateRec=class(TObject) TDBGridF = class(TDBGrid) 不同的物件當然會繼承不同的物件!
------
~小弟淺見,參考看看~
系統時間:2024-07-05 11:45:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!