函数地址(不知道是否确切!)

类别:编程语言 点击:0 评论:0 推荐:

本问参考网友的一篇TApplication的介绍而写的!

讨论的内容是只是个函数地址的东西!

假如你现在要在TStatusBar上显示时间,你可能有很多的方法,现在看这种:

void __fastcall TForm1::tryidle(TObject * Sender, bool & Done)
{
        Form1->StatusBar1->SimpleText=DateTimeToStr(Now());
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
        Form1->OnDblClick=tryer; 
        Application->OnIdle=tryidle;
         Form1->Button1->OnClick=Button3Click; 
}

如果你一定要问我:Sender和Done做什么用,我告诉你,根本没有用,只是为了凑成一个和Application->OnIdle一模一样的东西而已!

上边的资料取自www.chinabcb.com里的一篇文章!先边的是我自己考虑的东西,不知道有没有意思,如果你看了有帮助,那可别忘了谢谢那位幕后英雄啊!

其他的对象可以吗!我想也是可以的,于是我就继续,试一试TButton,就写了几个TButton在Form1上!

void __fastcall TForm1::Button3Click(TObject *Sender)
{
        ShowMessage("Button3Click!");
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
        Form1->OnDblClick=tryer;
        Application->OnIdle=tryidle;       

        Form1->Button1->OnClick=Form1->Button3->OnClick;

}

天呢,竟然不行!怎么办!改!

void __fastcall TForm1::Button2Click(TObject *Sender)
{
        Form1->OnDblClick=tryer;
        Application->OnIdle=tryidle;
        Form1->Button1->OnClick=Button3Click
}

保存在试,居然可以了!松了口气!

不过为什么不行呢!我不太明白!

查资料:TButton OnClick 是这么解释的!

Occurs when the user clicks the control.

__property Classes::TNotifyEvent OnClick = {read=FOnClick, write=FOnClick, stored=
IsOnClickStored};

Description

Use the OnClick event handler to respond when the user clicks the control. If the control has an associated action, and that action has an OnExecute method, the action抯 OnExecute method responds to click events unless it is superseded by an OnClick event handler.

Usually OnClick occurs when the user presses and releases the left mouse button with the mouse pointer over the control. This event can also occur when

The user selects an item in a grid, outline, list, or combo box by pressing an arrow key.
 The user presses Spacebar while a button or check box has focus.
 The user presses Enter when the active form has a default button (specified by the Default property).
 The user presses Esc when the active form has a cancel button (specified by the Cancel property).
 The user presses the accelerator key for a button or check box.

The Checked property of a radio button is set to true.
 The value of the Checked property of a check box is changed.
 The Click method of a menu item is called.

For a form, an OnClick event occurs when the user clicks a blank area of the form or on a disabled component.

TNotifyEvent 是什么东西呢!

NotifyEvent is used for events that do not require parameters.

Unit

Classes

typedef void __fastcall (__closure *TNotifyEvent)(System::TObjectTObject* Sender);

Description

The TNotifyEvent type is the type for events that have no event-specific parameters. These events simply notify the component that a specific event occurred. For example, OnClick, which is of type TNotifyEvent, notifies the control that a click event occurred on the control.

The Sender parameter is the object whose event handler is called.  For example,.with the OnClick event of a button, the Sender parameter is the button component that is clicked.

呵呵!

看明白没有啊!TNotifyEvent 是不需要参数的事件,那个Sender是个被呼叫的句柄!明白了没有,不过我是这么理解的!

本文地址:http://com.8s8s.com/it/it29151.htm