交流控件编程的技巧(200分)

  • 主题发起人 主题发起人 歪就歪
  • 开始时间 开始时间

歪就歪

Unregistered / Unconfirmed
GUEST, unregistred user!

各位,无论你是高手、低手,如果有关于控件制作方面的技巧和KnowHow,
请贴出来。让歪就歪偷学点儿手艺……
抱歉,我知道这个题目太空泛,但仍希望能有人回应。
我出钱,大家受益,如何?
 
只有我回应,分加给我吧 :)
 
几个基本概念问题一定要分清,比如Delphi提供的property不同于其他编程语言,更灵活。可以直接读取变量值,但需要执行特定操作时,又可调用过程/函数。等等。。。时间长了不用,我也快忘了:(
 
歪就歪:
什么时候公开让网友下载你的CoreAPIHelp?如果你愿公开,我愿给你1000分!
 
编控件其实是最简单的事啦.
找 个功能相近的标准(或第三方带源码)的控件, 看看你需要的功能是简单
添加还是需要大修改. 如果是简单添加功能, 那么继承自那个控件, 加入你
自己的事件, 方法, 属性等等.
如果是大修改(比如需要修改上层parent的某些功能但又不想重写一个标准
控件, 例如透明edit之类的), 我觉得处理也很简单, 从source中把原来那个
控件的源码整个copy过来, 然后修改一下. 呵呵, 可以省很多工夫, 并且对
原来那个控件的工作流程也清楚了.
 
Another_eYes:
别把我这低手给吓着啊,编控件对我来讲,还是有很困难的。比如:
1. 在设计时无法Debug.
2. 不知道如何加一个Event,比如Length(TMyLabel.Caption)>10
触发一个OnCaptionTooLong.
3. 自定义的TPropertyEditor如何能把数据传回给控件的相应Property
似乎应该是用:TPropertyEdit.SetValues和TPropertyEdit.GetValues
但到底该怎么用?
4. 象TTable和TDataSource之间,他们都是独立的Class,在设计时,
这两个Class并没有实例,是怎么把数据传过去的?
5. 编控件有没有一些小诀窍?
……………
所有这些,当然、也许……要去看VCL的源码去能看明白,非把我累趴下不可
To: 沈前卫:
当然没问题,我要分干什么?还不是为了多提问题。公开让大家荡COREAPI
一点问题也没有,只要:
一、出了分买的同志们不觉委屈。
二、嘿嘿,给我………1400分。

 
1. 设计时可以Debug啊,只要把测试用Project跟组件放在在一个目录里。
2。我一般的解决办法是自定义消息及相应的消息处理过程。
3,4,5: 我也好想知道啊。
 
Cheka:
关于问题一:
比如在设计时改变Property的值,您能DEBUG进SetXXXX(Value : xxx)里么?再比如,
在设计时,我要DEBUG你的PropertyEditor.Edit,行么?不行吧?
其他:其实,细说起来,编控件可能有不少问题应该值得一说呢。
 
To 歪就歪:
如果我能从 大富翁上下载CoreAPI,1400给你,决不食言!!!
{B-)
 
To 歪就歪:
低手???? 你现在可是排名第一呢!!!! {B-)
说实话,我在回答<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=173537">这个问题时</a>,对其并不熟悉,是我看ToolAPI的原代码才回答的,
所以我认为你应该去看看ToolAPI的代码,里面的注释非常详细,看完后编写控件会觉得比较容易。 {
 
2. 就你这个需要, TMyLabel.caption改动后, Delphi触发了一个CM_TEXTCHANGED
消息, inherited这个消息然后:
inherited;
if length(caption) > 10 then

showmessage('xxxxxxxx');
3. GetOrdValue, SetOrdValue;
4. 什么意思?
5. 抄源码(整个component地抄), 嘿嘿.
 
Hi, everyone, any more comment is very welcome...
 
to y9y:
2: 在SetCaption中判断Length(TMyLabel.Caption)>10时,
调用某一事件, 有什么问题吗?
 
将SetXXXX(Value : xxx)里面的程序功能在单独的Delphi工程文件中实现,在确
认无误后才写进SetXXXX;PropertyEditor.Edit也作同样处理。其实一般并不需要,
因为实现这些在设计时使用的功能一般都不是很复杂,不外乎接收一些输入数据罢了
,如果确实复杂,先建立一程序实现PropertyEditor.Edit的所有功能,再进行调试
,PropertyEditor.Edit与控件的耦合度并不是很精密!!! {B-)
 
谁有写控件的经验、诀窍,愿意继续与大家共享?
 
>谁有写控件的经验、诀窍,愿意继续与大家共享?
很象小时候写作文:
照搬-->增删-->模仿-->独立完成
当然必须同时逐渐加强在文字、语感和思维等方面的能力,
才能独立写好一篇作文。
不过写控件则是要加强对构件的组成、结构、API、OS的机理和建模等方面的掌握和理解。
 
<font color=green>
__ ._ ___ _, __
]L_@' d[~]L `@_dr
]@' "~-@[ `@[
]@ `@z@' @[
</font>
不要怪我,我向上提……
 
1, 只要在一个工程里uses 这个控件所在的unit 就行了。
 
后退
顶部