11.3. 衍生品管制
的OnClick
事件发生时, 你犯了一个控制点击一个。
__property类::TNotifyEvent的OnClick = {= FOnClick读,写= FOnClick};
无效__fastcall TForm1::CheckBox1Click(TObject *发件人)
{
PageControl1 -> ActivePage ->可见= CheckBox1 ->检查;
}
OnDblClick
事件发生时执行双击控制。
__property类::TNotifyEvent OnDblClick = {= FOnDblClick读,写= FOnDblClick};
这个例子通知用户点击的形式是双。
无效__fastcall TForm1::FormDblClick(TObject *发件人)
{
应用程序>的MessageBox(“您双击的形式”,“双击消息”,MB_OK);
}
OnDragDrop
发生在当用户完成拖放到画一)对象的形式(它丢弃对象的鼠标在控制释放按钮。您可以响应此活动的形式时,随时准备支持拖放。
无效的typedef __fastcall(__closure * TDragDropEvent)(系统::TObject *发件人,系统::TObject *资料来源,诠释十,int y)将;
__property TDragDropEvent OnDragDrop = {= FOnDragDrop读,写= FOnDragDrop};
参数X和Y是对控制鼠标的位置坐标。
OnDragOver
它发生在你用鼠标移动鼠标指针在对象的控制,同时绘图。您可以响应此活动的形式时,随时准备支持拖放。
枚举{TDragState dsDragEnter,dsDragLeave,dsDragMove}
无效的typedef __fastcall(__closure * TDragOverEvent)(系统::TObject *发件人,系统::TObject *资料来源,诠释十,诠释Ÿ,TDragState国家,布尔和接受);
__property TDragOverEvent OnDragOver = {= FOnDragOver读,写= FOnDragOver};
TdragState表示在关系的控制状态到另一个控制。可能的情况是:
价值 | 意义 |
dsDragEnter
| 进入控制鼠标。 |
dsDragMove
| 当鼠标移动到该控件。 |
dsDragLeave
| 鼠标离开该控件。 |
OnMouseDown
发生当用户单击鼠标按钮时鼠标指针控制已经结束了。
枚举{TMouseButton mbLeft,mbRight,mbMiddle};
枚举{Classes__1 ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble};
的typedef TShiftState日;
无效的typedef __fastcall(__closure * TMouseEvent)(系统::TObject *发件人,TMouseButton按钮,类::TShiftState移位,诠释十,int y)将;
__property TMouseEvent OnMouseDown = {= FOnMouseDown读,写= FOnMouseDown};
移参数响应Shift键和鼠标按钮。 shift键被转移,Ctrl和Alt X和Y的像素中的发件人的客户区鼠标指针的坐标。
下面的例子需要一个状态形成四嵌板的酒吧。 (设定面板的宽度为150之前的状态运行这个例子)。当用户按下鼠标按钮,移动鼠标,释放鼠标按钮,绘制一个矩形上的表格。当鼠标按键被释放时,矩形出现在窗体的画布。它的左上角和右下角的角落位置的按钮定义的鼠标指针当用户按下和释放鼠标。当用户拖动鼠标时,顶部的位置,左,底部和两侧的矩形显示在状态栏中。
诠释startx时,StartY / /声明在窗体的单元顶部
/ /使用这个窗体的onMouseDown事件处理程序代码:
无效__fastcall TForm1::Button1MouseDown(TObject *发件人,巴顿TMouseButton,TShiftState移位,诠释十,int y)将{
运行startx = X的;
StartY = Ÿ;
}
/ /使用这个窗体的onMouseUp事件处理程序代码:
无效__fastcall TForm1::FormMouseUp(TObject *发件人,巴顿TMouseButton,TShiftState移位,诠释十,int y)将{
Form1的->“画布->矩形(startx时,StartY,的X,Y);
StatusBar1中->板[0] - >“文本=”“;
StatusBar1中->面板[1] - >“文本=”“;
StatusBar1中->板[2] - >“文本=”“;
StatusBar1中->板[3] - >“文本=”“;
}
/ /使用这个窗体的OnMouseMove事件处理程序代码:
无效__fastcall TForm1::FormMouseMove(TObject *发件人,TShiftState移位,诠释十,int y)将
{
如果(Shift.Contains(ssLeft))/ /确保已关闭按钮
{
如果(Ÿ> StartY){
StatusBar1中->板[0] - >“文本=”0:“+ IntToStr(StartY)
StatusBar1中->板[2] - >“文本=”底:“+ IntToStr(Y)的;
}
否则{
StatusBar1中->板[0] - >“文本=”0:“+ IntToStr(Y)的;
StatusBar1.Panels [2]文字=“底部:”。+ IntToStr(StartY)
}
如果(X>运行startx){
StatusBar1中->面板[1] - >“文本=”左:“+ IntToStr(startx时)
StatusBar1中->板[3] - >“文本=”右:“+ IntToStr(X)的;
}
否则{
StatusBar1中->面板[1] - >“文本=”左:“+ IntToStr(X)的;
StatusBar1中->板[3] - >“文本:=”右:“+ IntToStr(startx时)
}
}
}
onmousemove等
发生当用户移动鼠标时鼠标指针控制已经结束了。
枚举{Classes__1 ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble};
的typedef TShiftState日;
无效的typedef __fastcall(__closure * TMouseMoveEvent)(系统::TObject *发件人,类::TShiftState移位,诠释十,int y)将;
__property TMouseMoveEvent onmousemove等= {= FOnMouseMove读,写
= FOnMouseMove};
移参数响应Shift键和鼠标按钮。 shift键被转移,Ctrl和Alt X和Y的像素中的发件人的客户区鼠标指针的坐标。
下面的代码更新这两个标签,当鼠标移动指针。该代码假定你有两个标签的形式,lbVert lbHorz。如果您附加此代码到窗体的OnMouseMove事件,lbHorz不断显示鼠标指针的水平位置,并lbVert不断显示鼠标指针的垂直位置,而指针的形式结束了。
无效__fastcall TForm1::FormMouseMove(TObject *发件人,TShiftState移位,诠释十,int y)将
{
焦xPos [10];
焦yPos [10];
itoa(十,xPos,10);
itoa(黄,yPos,10);
lbHorz ->标题= xPos;
lbVert ->标题= yPos;
}
OnMouseUp
发生当用户释放鼠标按钮被按下鼠标指针控制cusando结束了。
枚举{TMouseButton mbLeft,mbRight,mbMiddle};
枚举{Classes__1 ssShift,ssAlt,ssCtrl,ssLeft,ssRight,ssMiddle,ssDouble};
的typedef TShiftState日;
无效的typedef __fastcall(__closure * TMouseEvent)(系统::TObject *发件人,TMouseButton按钮,类::TShiftState移位,诠释十,int y)将;
__property TMouseEvent OnMouseUp = {= FOnMouseUp读,写= FOnMouseUp};
移参数响应Shift键和鼠标按钮。 shift键被转移,Ctrl和Alt X和Y的像素中的发件人的客户区鼠标指针的坐标。
下面的代码绘制一个矩形当用户按下鼠标按钮,移动鼠标,释放鼠标按钮。当鼠标按键被释放时,矩形出现在窗体的画布。它的左上角和右下角的角落位置的按钮定义的鼠标指针当用户按下和释放鼠标。
诠释startx时,StartY / /声明在形式上的单元接口部分
无效__fastcall TForm1::FormMouseDown(TObject *发件人,巴顿TMouseButton,TShiftState移位,诠释十,int y)将
{
运行startx = X的;
StartY = Ÿ;
}
无效__fastcall TForm1::FormMouseUp(TObject *发件人,巴顿TMouseButton,TShiftState移位,诠释十,int y)将
{
Form1的->“画布->矩形(startx时,StartY,的X,Y);
}