小弟最近碰到的一个项目要反复使用一个只能输入数字的Edit,于是我就想像VC中那样写个类,省时省力.结果发现在Delphi里面这个过程方便的资料比较少.碰到了不少问题,特来请教.
1、对事件的处理
我看了有的例子是重载OnClick等函数,另外的一些却是直接写个
procedure OnClick(var Msg: TMessage);message WM_LBUTTONDOWN;
感觉前者好,面向对象。只用专注于需要增加的功能。但我发现要重载函数时,往往不知道这个函数的原型,不知大家是怎么处理的。VC是只要Ctrl+W,找到对应的消息,双击就行了。Delphi是不是也这么方便。现在我只能一个一个的去查,比较烦。
2、我想自己写的控件用我设计的图标。这样在Delphi的控件栏上挑起来也方便些。
可是照着见网上的方法:用Image Editor做一个与控件的源文件名相同的.dcr文件。在里面画一个32*32的图标。名字与控件的方相同。结果Install后出来的还是那个老的图标,这个怎么解决?
1、对事件的处理
我看了有的例子是重载OnClick等函数,另外的一些却是直接写个
procedure OnClick(var Msg: TMessage);message WM_LBUTTONDOWN;
感觉前者好,面向对象。只用专注于需要增加的功能。但我发现要重载函数时,往往不知道这个函数的原型,不知大家是怎么处理的。VC是只要Ctrl+W,找到对应的消息,双击就行了。Delphi是不是也这么方便。现在我只能一个一个的去查,比较烦。
2、我想自己写的控件用我设计的图标。这样在Delphi的控件栏上挑起来也方便些。
可是照着见网上的方法:用Image Editor做一个与控件的源文件名相同的.dcr文件。在里面画一个32*32的图标。名字与控件的方相同。结果Install后出来的还是那个老的图标,这个怎么解决?
解决方案 »
- 图像缩放,截图
- 窗体填充必须在paint事件中进行么?
- 请问,如何通过当前活动应用程序的窗体句柄,并且修改它!
- C#通过ODBC访问Delphi自带的数据库(paradox),不支持中文字段?
- 如何提高这个查询的效率
- 用BDE不能访问设置了登陆帐号的ACCESS数据库的问题!(在线等 100分送)
- 怎么在三层结构中读写Blob字段
- 我在QUERY控件里执行 select top 100 * from 表名?为什么会出错?帮帮我,谢谢
- 书中的.if length(s)=high(s) then dec(s[0]) 是怎么比较和截取的?谢谢。
- web编程
- application Servic 问题! 急 分不够还有!
- 如何在D7中显示动画图标?
保证图标名与类名相同而且要全部大写,会成功的上帝保佑你 啊门!
里面有个"图标名"的图标.
我的类叫"T类名",保存在"类名".pas的文件中
现在的问题
其中到底哪些名字要一致?哪些要大写
3方的东西都是在日常应用中为了解决delphi自带控件的不足而产生的,自然有它产生的道理。有漏洞可以自己修改啊,为什么不用?
先声明
procedure WMChar(var Message: TWMChar); message WM_CHAR;然后在implement部分加入如下代码procedure TMyEdit.WMChar(var Message: TWMChar);
var
theRect:tRect;
Key:Word;
OldText:String;
ShiftState:TShiftState;
begin
with Message do
begin
ShiftState := KeyDataToShiftState(KeyData);
Key:=CharCode;
if (Key<Ord('0')) OR (Key>Ord('9')) then
begin
CharCode:=0;
end;
Inherited;
end;
end;
上面的代码只允许输入0到9这几个字符,其它的字符不能输入,楼住稍加修改即可使用