难题!有关于组合控件的事件 ( 积分: 100 )

  • 主题发起人 主题发起人 一条大鱼
  • 开始时间 开始时间

一条大鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
现想做一个类似于OutLookBar的控件,每个项目显示多行文字,不显示图标
控件继承于TPanel,创建时在里面动态加载TSpeedButton,TScrollBox,
而TScrollBox在运行时可以添加多个项目,每个项目都是继承于类似于TLabel的控件
现在想把TLabel的OnClick事件显示在TPanel的事件栏里,并改名为OnItemClick事件
可以TLabel为程序运行时动态创建,这个问题如何解决?
 
现想做一个类似于OutLookBar的控件,每个项目显示多行文字,不显示图标
控件继承于TPanel,创建时在里面动态加载TSpeedButton,TScrollBox,
而TScrollBox在运行时可以添加多个项目,每个项目都是继承于类似于TLabel的控件
现在想把TLabel的OnClick事件显示在TPanel的事件栏里,并改名为OnItemClick事件
可以TLabel为程序运行时动态创建,这个问题如何解决?
 
type
TOutlookLikeBar = class(TPanel)
private
FOnItemClick: TNotifyEvent;
protected
function CreateItem: TLabel;
....
published
property OnItemClick: TNotifyEvent read FOnItemClick write FOnItemClick;
end;

procedure TOutlookLikeBar.CreateItem: TLabel;
begin
Result := TLabel.Create(Self);
with Result do
begin
Caption := ....;
Left := ....;
Top := ....;
OnClick := FOnItemClick;
....
end;
end;
 
当天问题就解决了,在控件里使用自定义消息
也就是转发消息,使用没有问题
Another_Yes
你的方法我刚试了,行不通
欢迎大家来讨论,还有没有什么更好的方法
过两天散分
 
参考一下TLabeledEdit的源码。
 
TLabeledEdit跟我这个情况根本就是两码事
Edit旁边那个Labeled是在设计期间就放在上面的,而且数量只为一个
我的是在运行期间放上去的,数量不定
 
来自:Another_eYes, 时间:2005-6-21 16:07:41, ID:3109670
type
TOutlookLikeBar = class(TPanel)
private
FOnItemClick: TNotifyEvent;
protected
function CreateItem: TLabel;
procedure InnerItemClick(Sender: TObject);
....
published
property OnItemClick: TNotifyEvent read FOnItemClick write SetOnItemClick;
end;

procedure TOutlookLikeBar.CreateItem: TLabel;
begin
Result := TLabel.Create(Self);
with Result do
begin
Caption := ....;
Left := ....;
Top := ....;
OnClick := InnerItemClick
....
end;
end;

procedure TOutlookLikeBar.InnerItemClick(Sender: TObject);
begin
if Assigned(FOnItemClick)
FOnItemClick(Sender);
end;

procedure TOutlookLikeBar.SerOnItemClick(...)
begin
//foreach innerItem in Items
// innerItem.OnClick:= InnerItemClick;
end;
 
后退
顶部