delphi中command/action的疑惑

原创 2004年09月17日 13:48:00

   在看了一大堆提到界面和代码分离的理论以后,不知道大家对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并没什么区别.



 

2017noip提高组复赛day1小凯的疑惑题解

①题目 ◆描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有 无数个。在不找零的情况下,仅凭这两种金币,有些物品他是          无法准确支付的。现在小凯...
  • Helenal
  • Helenal
  • 2017年12月16日 16:31
  • 240

例题 小凯的疑惑

小凯的疑惑【Noip2017普及组day1第一题】 先看下题:  小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。 在不找零的情况下,仅凭这两种金币,有些...
  • qq_40216330
  • qq_40216330
  • 2017年12月27日 20:20
  • 35

NOIP2017Day1T1小凯的疑惑

Description 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物...
  • white_elephant
  • white_elephant
  • 2017年11月22日 20:48
  • 357

appium 利用相对坐标解锁九宫格

今天,碰到了一个九宫格解锁的问题,查了资料,找到了一篇相关文章:http://www.cnblogs.com/tobecrazy/p/4881390.html,但是下图并不能获取某个空格的elemen...
  • fgwvip123
  • fgwvip123
  • 2016年05月25日 16:41
  • 1283

NOIP2017Day1T1-小凯的疑惑

1.小凯的疑惑  (math.cpp/c/pas)  【问题描述】  小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物...
  • qq_34531807
  • qq_34531807
  • 2017年11月11日 19:58
  • 1052

蓝牙 AVDTP 剖析(二) --- command格式 和 流程

一.PDU解析 1.Signal command and response headers PDU ID 1).AVDTP_DISCOVER 2).AVDTP_...
  • XiaoXiaoPengBo
  • XiaoXiaoPengBo
  • 2016年06月15日 15:38
  • 1154

利用DCC自动编译Delphi工程组文件

Borland出品的Delphi,有着闪电般的编译速度,但是在界面控件使用较多、工程项目较大的时候,编译一个工程仍需要一段时间,打开庞大的Delphi IDE,也需要时间。其实,在一个工程开发结束,调...
  • delphizhou
  • delphizhou
  • 2013年11月19日 14:33
  • 3736

delphi中的ActionList使用方法

DelphiActionList详解  一个友好的用户界面,必须具有下拉菜单,弹出菜单,工具条和快捷键。同样一个功能,程序员可能要提供几种操作方式,如文本拷贝,菜单命令 &Copy,快捷键Ctrl+...
  • u010673851
  • u010673851
  • 2014年01月14日 11:19
  • 1373

telnet 创建及操作

Windows XP使用telnet远程连接Linux方法2012-05-22 00:00 中国IT实验室 佚名  关键字:Windows    虽然说telnet是明文传输不太安全,但总有点必要...
  • jurken
  • jurken
  • 2014年09月28日 08:57
  • 968

Delphi 实现Ping命令

用Delphi实现智能化Ping命令功能 众所周知,Ping命令是Windows系统自带的一个针对TCP/IP协议的可执行命令, 其主要作用是通过发送数据包并接收应答信息来检测两台计算机之间的...
  • lailai186
  • lailai186
  • 2013年04月12日 08:38
  • 3959
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:delphi中command/action的疑惑
举报原因:
原因补充:

(最多只允许输入30个字)