11. 活动形式
11.1. 衍生物TCustomForm
OnActivate
此事件发生在窗体创建时或从一种形式转变到另一个应用程序内。可以检测到另一个应用程序传递给我们的事件用于OnActivate Taplication对象。
__property类::TNotifyEvent OnActivate = {= FOnActivate读,写= FOnActivate,储存= ISForm};
以下代码添加到Form2的字幕向Form1中列出时向Form2框被激活。
#包括“Unit1.h”/ /所以我们可以参考到Form1。
无效__fastcall TForm2:FormActivate(TObject *发件人)
{
Form1的-> ListBox1的->项目->“添加(屏幕>的ActiveForm ->字幕);
}
OnClose中
当您关闭该窗体的OnClose事件发生。 这使得调用OnCloseQuery检查它是否是正确的关闭表单。如果OnCloseQuery返回false,窗体不会关闭。
枚举{TCloseAction枪,caHide,caFree,caMinimize};
无效的typedef __fastcall(__closure * TCloseEvent)(系统::TObject *发件人,TCloseAction与行动);
__property TCloseEvent的OnClose = {= FOnClose读,写= FOnClose,储存= ISForm};
关闭窗体使用Close()方法。
该方法TcloseEvent指示如何关闭该窗体。该行动的变量的参数值决定是否关闭窗体。
行动 | 说明 |
canone | 该表格还没有准备好被关闭。 |
caHide | 该表格没有关闭,但仍然隐藏。应用程序仍然可以访问表单 |
CaFree | 在窗体关闭和被占领的记忆是免费的。 |
CaMinimize | 最小化的形式,在结束前。这是MDI子窗体的默认操作。 |
这个例子显示一个消息对话框当用户试图关闭该窗体。如果用户点击是按钮,窗体关闭,否则,形式照常开放。
无效__fastcall TForm1::FormClose(TObject *发件人,TCloseAction与行动)
{
如果(应用程序>的MessageBox(“关闭应用程序?”,“关闭?”MB_YESNO)== mrYes)
行动= caFree;
其他
行动=费;
}
OnCloseQuery
发生时,调用close方法或用户的形式作用于紧密的工具栏图标上。
无效的typedef __fastcall(__closure * TCloseQueryEvent)(系统::TObject *发件人,布尔和CanClose)
__property TCloseQueryEvent OnCloseQuery = {= FOnCloseQuery读,写= FOnCloseQuery,储存= ISForm};
CanClose变量决定表单是否可以关闭。默认为true。
例如,你可以使用事件OnCloseQuery关闭之前保存在一个文件中形成一个文件。
当用户试图关闭这个例子中,形式,一个消息对话框,询问用户是否是确定以关闭该窗体。如果用户选择是按钮,窗体关闭。如果用户选择取消或否,不关闭该窗体。
无效__fastcall TForm1::FormCloseQuery(TObject *发件人,布尔和CanClose)
{
如果(应用程序>的MessageBox(“关闭窗体?”,“关闭?”MB_YESNOCANCEL)!= mrYes)
CanClose = 0;
}
OnCreate中
表单时发生第一次被创建。与此事件将执行所有必要的任务之前的形式运作的。只有每个窗体的OnCreate事件发生。
__property类::TNotifyEvent的OnCreate = {= FOnCreate读,写= FOnCreate,储存= ISForm};
这个非常简单的OnCreate事件处理程序的形式保证,是应用系统的工作区相同的颜色作为您的Windows的颜色:
无效__fastcall TForm1::FormCreate(TObject *发件人)
{
颜色= clAppWorkSpace;
}
注意:这个例子是颜色的财产不能形成营建署的名称。如果你写的这个声明一样,
Form1的->“颜色= clAppWorkSpace;
如果没有应用程序将无法运行Form1中因为没有错误,那么在当时还不存在这个代码执行
OnDeactivate
窗体时发生失去焦点。此事件是用来控制从目前的形式过渡到另一个应用程序活动的形式相同。当你通过我们的应用程序到另一个,这一事件不会发生。为了控制实施步伐,使用事件对象OnDeactivate Taplication。
__property类::TNotifyEvent OnDeactivate = {= FOnDeactivate读,写= FOnDeactivate,储存= ISForm};
的OnDestroy
对面的OnCreate事件。这是用来清洗免费或动态分配的内存,一个形式。
__property类::TNotifyEvent的OnDestroy = {= FOnDestroy读,写= FOnDestroy,储存= ISForm};
下面的代码动态调用BtnMyButton创建按钮“的按钮的标题为”我的。按钮与内存相关的表格时删除被销毁。
__fastcall TForm1::TForm1(TComponent *拥有者)
:TForm(业主)
{
BtnMyButton =新TButton的(这一点);
BtnMyButton ->父=这一点;
BtnMyButton ->标题=“我的按钮”;
}
//------------------------------------------------ ------------------
无效__fastcall TForm1::FormDestroy(TObject *发件人)
{
删除BtnMyButton;
}
事件的顺序对表创建和销毁
因为形式是创建和Visible属性为真,以下事件发生在列表中的顺序:
订购 | 活动 | 使用 |
一 | OnCreate中 | 为形式运作所需的初步任务。 |
2 | OnShow | 需要处理才成为可见的形式。 |
三 | OnActivate | 当从一种形式转换到另外一个应用程序。 |
4 | OnPaint中 | 当表单被重新绘制。 |
因为形式被关闭,释放内存,下列事件发生在列表中的顺序:
订购 | 活动 | 使用 |
一 | OnCloseQuery | 关闭前保存在一个文件中形成一个文件。 |
2 | OnClose中 | 看它是否是正确的关闭窗体。 |
三 | OnDeactivate | 转轨是积极的形式为另一种形式 |
4 | 的OnDestroy | 清洁 |
OnHelp
接收时发生形式的协助请求。
布尔__fastcall的typedef(__closure * THelpEvent)(Word命令,int数据,布尔和CallHelp)
__property类::THelpEvent OnHelp = {= FOnHelp读,写= FOnHelp};
OnHide
窗体时发生隐藏 (Visible属性时,设置为false)
__property类::TNotifyEvent OnHide = {= FOnHide读,写= FOnHide,储存= ISForm};
这个例子使用两种形式,每一个标签和一个按钮。当用户点击一个按钮,另一种形式出现和消失的现有形式。另外,一个消息标签的形式出现在所显示,表明另一种形式是隐藏的。这是实施第1单元:
#包括“Unit2.h”
//------------------------------------------------ ------------------
__fastcall TForm1::TForm1(TComponent *拥有者)
:TForm(业主)
{
}
//------------------------------------------------ ------------------
无效__fastcall TForm1::Button1Click(TObject *发件人)
{
Form2的->“显示();
隐藏();
}
//------------------------------------------------ ------------------
无效__fastcall TForm1::FormHide(TObject *发件人)
{
Form2的-> Label1的->标题=“Form1是藏”
}
这是单元2实现部分:
#包括“Unit1.h”
//------------------------------------------------ ------------------
资源的#pragma“*. DFM的”
TForm2 * Form2的;
//------------------------------------------------ ------------------
__fastcall TForm2::TForm2(TComponent *拥有者)
:TForm(业主)
{
}
//------------------------------------------------ ------------------
无效__fastcall TForm2::Button1Click(TObject *发件人)
{
Form1的->“显示();
隐藏();
}
//------------------------------------------------ ------------------
无效__fastcall TForm2:FormHide(TObject *发件人)
{
Form1的-> Label1的->标题=“Form2的是藏”
}
OnPaint中
发生时,形式是重新绘制。当你必须不断显示在窗体的对象,或作为大小的形式的结果。
__property类::OnPaint中TNotifyEvent = {= FOnPaint读,写= FOnPaint,储存= ISForm};
下面的代码加载一个位图背景的OnPaint事件处理程序在画布上的主要形式。在第一单元的头文件。添加TForm1图形私有成员类型::TBitmap命名TheGraphic;
无效__fastcall TForm1::FormPaint(TObject *发件人)/ / OnPaint事件处理程序
{
Form1的->“画布->绘图(0,0,TheGraphic)/ /绘制帆布上的图形
}
无效__fastcall TForm1::FormCreate(TObject *发件人)/ / OnCreate事件处理程序
{
TheGraphic =新的Graphics::TBitmap(); / /创建位图对象
TheGraphic -> LoadFromFile(的“C:\ APP的\ BKGRND.BMP”)/ /从文件加载位图
}
的OnResize
每次启动您调整的表格。此事件是用来调整窗体位置上的部件或重绘。
__property类::TNotifyEvent的OnResize = {= FOnResize读,写= FOnResize,储存= ISForm};
以下是保持代码大小的右边缘时,右边缘Button1的反对Form1的Form1上。
无效__fastcall TForm1::FormResize(TObject *发件人)
{
Button1的->左= Form1的-> clientWidth - Button1的->宽度;
}
OnShow
之前发生的形式是可见的 (当Visible属性设置为true)。您可以使用此事件来执行任何程序之前,成为可见的形式所必需的。
__property类::TNotifyEvent OnShow = {= FOnShow读,写= FOnShow,储存= ISForm};
这个例子的形式和颜色的变化当成为性病可见标题:
无效__fastcall TForm1::FormShow(TObject *发件人)
{
颜色= clLime;
标题=“我是显示”
}