怎样在TListBox控件里面加入onchange事件呢?(50分)

  • 主题发起人 主题发起人 pyliu
  • 开始时间 开始时间
P

pyliu

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么在TListBox控件里面没有onchange事件呢?
新手向诸位大侠请教.
 
TMyListBox=class(TListBox)
...
public
FOnChange: TNotifyEvent;
publish
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;

implementation

procedure TMyListBox.KeyPress;
begin
if Assigned(OnChange)
then OnChange(Sender);
inherited KeyPress
end;

procedure TMyListBox.Append;
begin
if Assigned(OnChange)
then OnChange(Sender);
inherited Append
end;
.
.
.
end;
依照上述方法对所有涉及Change的方法进行改写。
 
你能不能说明当什么情况触发OnChange事件?
 
对沈前卫:希望当ItemIndex改变时,产生OnChange或onchanged 事件.
对LeeChange:那样做是不是不能call使用者的KeyPress事件或OnClick事件
了呢?

我也 曾这样做,但是不能调用OnClick了,所以我只好从TCustomListBox继承
并且不published OnClick属性.
constructor TMyList.Create(AOwner: TComponent);
begin
inherited;
Self.Width:=150;
Self.Height:=150;
Self.OnClick:=CheckItemChangeM;
Self.OnKeyPress:=CheckItemChangeK;
Self.ItemIndex:=0;
FOldItemIndex:=0;
end;

procedure TMyList.CheckItemChangeM(Sender: TObject);
begin
//if Assigned(OnClick) then OnClick(Sender);
if (FOldItemIndex<>Self.ItemIndex) then begin
FOldItemIndex:=Self.ItemIndex;
if Assigned(OnChange) then OnChange(Sender);
end;

FOldItemIndex:=Self.ItemIndex;
end;

......
 
多人接受答案了。
 
后退
顶部