"一个优秀的Delphi程序员,不仅要会使用控件,还要会写控件."(向玉笛书生致敬)
我还是一个半瓢水的程序员,因此目前为止我所能努力达到的境界是:
一个半瓢水的程序员,管他会不会写控件,只要能拿来改就可以了.
使用过Delphi的朋友都知道,我们在设计Delphi应用程序的某一功能时总是希望能够有现成的第三方免费控件可以拿来使用.但实际情况往往是,网上的控件确实种类繁多,优秀作品也数不胜数,但真正完全能够符合设计者具体要求的控件却很少.究其原因,不外乎以下几条
1.国人开发的应用程序大多具有中国特色,而优秀的第三方控件往往是国外程序开发人员开发的(大名鼎鼎的Rxlib,知道吧,俄罗斯人的作品).功能定义上的差别导致了控件的不可用性,看看QuickReport就知道了(当然,QuickReport编的也很烂).
2.真正优秀的第三方控件总是从大局上把握控件所能达到的功能,细节问题考虑的不多.而我们设计的程序通常要考虑到很多操作细节上的问题(一般是客户的要求,有时会有些变态)
3.对于许多很有特色的控件,我们所需要的只是其中一部分功能,但是它被整合到了某一个大的方法中,无法为我们所用.
4.优秀和免费总是两个矛盾,天下没有免费的午餐.
种种原因,限制了开发者对控件资源的充分利用.其实,很多控件的代码都提供了开放的接口.只要大家对控件的原理有一定的了解,然后对别人的控件代码作一捏捏的修改,就可以无缝的添加自己需要的功能,或剔除冗余的功能.既达到了开发的目的,又避免了重写代码的麻烦,一举两得(好像很不负责任啊,没办法了,半瓢水嘛).关于控件的原理,应该有很多文章介绍过了,在这里我想通过一个具体的实例来介绍一下怎样将别人的控件"拿来"为我所用.