delphi中command/action的疑惑

2016-02-19 12:52 16 1 收藏

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

【 tulaoshi.com - 编程语言 】

     在看了一大堆提到界面和代码分离的理论以后,不知道大家对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的空间都消失我可以这样做:

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

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

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

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

  
  
   

来源:https://www.tulaoshi.com/n/20160219/1602239.html

延伸阅读
Delphi中的字符串 ——摘自网络 一:各种字符串  字符串是Object Pascal所有数据类型中最有用的类型。许多函数以字符串为传递参数。由于在Delphi中字符串的定义和使用有各种方式,包括Pascal中典型的字符串(String),Delphi支持的长字符串(ANSIString),类似于C语言的字符数组(Array of Char),指向字符的...
网上找来的 感觉对入门者很有启示 收藏一下了! No.1 判断逻辑类型 } var B: Boolean; begin B := Boolean(2); //这样只是为了调试//B := True; if B = True then ShowMessage('B = True'); //不建议//不安全 /////// if B then ShowMessage('B'); //建议//简短 end; var B: Boolean;...
标签: Delphi
  ---- Delphi是一种面向对象的编程语言,由于它采用完全集成OOP的优点,因此使它成为目前十分流行的Windows开发工具。在Delphi包含的众多类中,TApplication是一个有着十分重要作用的类。TApplication类是用于描述Delphi编制的应用程序的一个类。通过对这个类的灵活应用可以编制许多有特点的程序。下面我们就举几个这方面的例子...
1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)  以下代码在WIN2K,D6,MDAC2.6下测试通过,  编译好的程序在WIN98第二版无ACCESS环境下运行成功. //在之前uses ComObj,ActiveX //声明连接字符串 Const SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;' +'Jet OLEDB:Database Password=%s;'; //...
标签: Delphi
  一、Owner和Parent的区别: Parent属性是指构件的包容器,构件只能在此范围内显示和移动。举例子如下: (1)在Form1的窗体上,放一个Panel1,并将Panel1拉大, (2)在Panel1上放一Button1; (3)在Form1上放一Button2。 现在如果移动Panel1,则Button1随着Panel1移动,这是因为Button1的Parent是Panel1。现...

经验教程

938

收藏

58
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部