请教sender在程序中的使用方法?(50分)

  • 主题发起人 主题发起人 lyloyal
  • 开始时间 开始时间
L

lyloyal

Unregistered / Unconfirmed
GUEST, unregistred user!
请教sender在程序中的使用方法?,例如sender=xxx,sender is xxx, sender as xxx
请赐教!
 
In an event handler, the Sender parameter indicates which component
received the event and therefore called the handler. Sometimes it is useful
to have several components share an event handler that behaves differently
depending on which component calls it. You can do this by using the Sender
parameter in an if...then...else statement. For example, the following code
displays the title of the application in the caption of a dialog box only if
the OnClick event was received by Button1.

procedure TMainForm.Button1Click(Sender: TObject);

begin
if Sender = Button1 then
AboutBox.Caption := 'About ' + Application.Title
else
AboutBox.Caption := '';
AboutBox.ShowModal;
end;
 
其实sender就是封装了windows的消息的对象。在动态创建控件,释放资源,判断事件目标等等
非常有用。具体使用方法你可以查找一下创建控件,释放控件,判断事件反应之类的旧贴。
 
在事件处理程序参数表中,至少含有一个参数sender,它代表触发事件处理程序的构件,如
在上例中,sender就指button2,有了sender参数,可以使多个构件共用相同的事件处理程
序,如下例:

  procedure tform1.buttonclick(sender:tobject);
  begin
  if sender=button1 then
  label1.caption:=′看庭前花开花落′  else label2.caption:=′望天上云卷云舒′
  end;

  在此例中,button1,button2共用了buttonclick事件处理程序。

  self是指所编的程序范围是在哪一个类中,delphi中大都在窗体范围内编程,因此,
self即指窗体,如果在编写一个类或是一个组件,则self指该类或组件。我们在函数
或过程的声明中可看出self是代表哪个组件,即self代表‘.’号之前的组件,如在第
一个例子中,self代表tform1。另外应注意,self只能用在类方法中,而不能用在过程或
函数中,如下例用法是错的:function a1(b:integer):integer;
  begin
  ……
  button:=tbutton.create(self);……
  end;  

 
后退
顶部