delphi中command/action的疑惑

5anyliuliu

5anyliuliu

2016-02-19 12:52

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享delphi中command/action的疑惑,希望可以对大家能有小小的帮助。

     在看了一大堆提到界面和代码分离的理论以后,不知道大家对command/action模式到底是怎么理解的?我在此也有如此疑问,一般情况下在dlephi中一提到command/action 模式,第一个想到的就是TActionList,TActionManager等一系列的action控件,然而似乎delphi控件的设计方式或者说事件件调用方法本身就是以command/action模式来进行设计的。也就是说不必去刻意的追求command/action模式而是在一般的编码是注意一些我看就足够了。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  就我的理解以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的空间都消失我可以这样做:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

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

  这和调用TAction.Visible并没什么区别.

  
  
   

展开更多 50%)
分享

猜你喜欢

delphi中command/action的疑惑

编程语言 网络编程
delphi中command/action的疑惑

Photoshop的Action

PS PS教程
Photoshop的Action

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Delphi中的容器类

编程语言 网络编程
Delphi中的容器类

Delphi中的线程类

编程语言 网络编程
Delphi中的线程类

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Delphi中RichEdit的奥妙

Delphi
Delphi中RichEdit的奥妙

Delphi中的布尔类型

编程语言 网络编程
Delphi中的布尔类型

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

ADO控件和DATA控件的冲突(不能共存)的解决方法

ADO控件和DATA控件的冲突(不能共存)的解决方法

文本加密解密

文本加密解密
下拉加载更多内容 ↓