程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> delphi中command/action的疑惑

delphi中command/action的疑惑

編輯:Delphi

     在看了一大堆提到界面和代碼分離的理論以後,不知道大家對command/action模式到底是怎麼理解的?我在此也有如此疑問,一般情況下在dlephi中一提到command/action 模式,第一個想到的就是TActionList,TActionManager等一系列的action控件,然而似乎delphi控件的設計方式或者說事件件調用方法本身就是以command/action模式來進行設計的。也就是說不必去刻意的追求command/action模式而是在一般的編碼是注意一些我看就足夠了。

  就我的理解以TButton的OnClick事件來說。
     一般情況下,在我們的程序重要想定義這個事件直接雙擊該控件然後再寫代碼就是了,例如:
     procedure TForm1.Button1Click(Sender: TObject);
     begin
       ...; 
     end;
    可能有人會認為這樣代碼和界面耦合就比較嚴重了因為這個函數實際上和界面混合在一起了.以後要是修改界面的話就會很麻煩了。
   可是我卻不這麼認為,就以下為例吧:
   要是想用另一個button2(或是一個menuitem或是其他的一個command事件)來實現這個功能,我可以讓button2的OnClick事件指向指向Button1Click就行啊。並且在修改的時候也只是維護Button1Click這一份代碼阿?

  或者在其次我在button2的初始化的時候(因為button2可以動態創建)令button2.OnClick := Button1Click就行啊,我為什麼要一定來實現這個所謂的TAction呢?

  再說道對界面的控制,用TAction 的對象可以對界面對象進行一些簡單的操作,可是在一般情況下我也可以通過調用函數的sender參數來完成相同的工作阿,比如我想讓所有的調用了button1Click的空間都消失我可以這樣做:

    if Sender is TControl then
       TControl(Sender).Visible := false;

  這和調用TAction.Visible並沒什麼區別.

  
  
   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved