关于stringGrid的编写。请高手指点。
1 本人想编写一个TStringGrid的子类,并打算复盖keydown事件,以便在最后一行按下'下箭头'时自动增加一行,按下'上箭头'时,如果某些条件成立,自动删除最后一行。 但这个条件由组件的客户而定(例如:第二列及第三列内容为空时条件成立或者其它)。 请问应该如何实现??? 使用事件驱动可以有返回值吗???
问题点数:20、回复次数:3Top
1 楼dickman(我为window狂)回复于 2005-07-15 13:52:32 得分 0
事件都必须是过程吗? 能否是一个有返回值的函数???Top
2 楼windindance(风舞轻扬·白首为功名)回复于 2005-07-15 14:17:20 得分 20
定义一个事件:
type
TCheckValueNotify = procedure(Sender:TObject; var CanCheck:boolean);
class ()
..
OnCheckValue:TCheckValueNotify read FOnCheckValue write FOnCheckValue;
在OnKeyDown事件中这样处理:
var
CanCheck :boolean;
if Assigned(FOnCheckValue) then
begin
FOnCheckValue(Sender, CanCheck);
if CanCheck then
...
在组件的客户中,需要响应OnCheckValue事件,在该事件中为CanCheck赋值。
如果需要多个状态,可以将var CanCheck:boolean 修改为:var State:Integer;Top
3 楼windindance(风舞轻扬·白首为功名)回复于 2005-07-15 14:18:03 得分 0
事件都必须是过程。
如果需要定义返回值,用var参数传递。
Top




