将鼠标固定在某一点,禁止移动,比如类似某些网管软件,禁止在屏幕最右下角.procedure EnableMouse(Enabled: Boolean); var R:TRect; p:TPoint; begin if Enabled then ClipCursor(nil) //解除鼠标锁定 else begin GetCursorPos(p); R:=Rect(p.X,p.Y,p.X,p.Y); ClipCursor(@R);//锁定鼠标 end; end;
begin EnableMouse(False); //锁定 处理事务 EnableMouse(True); //解除 end
很简单啊。对showModal而言,可以在它的OnClick事件里预先检测任务是否完成:procedure TTheForm.FormClick(Sender :TObject); begin if not TaskProcessing then ;任务正在处理就不响应Click事件 begin ...... end; end;再或者动态设置事件,Create TheForm时,设置TheForm.OnClick :=nil,完成任务后,再设置TheForm.OnClick :=FormClick;
form.OnClick := nil; 或者
form.OnMouseDown := nil;
结束了
form.OnClick := ClickProcedure()
......
var
R:TRect;
p:TPoint;
begin
if Enabled then
ClipCursor(nil) //解除鼠标锁定
else
begin
GetCursorPos(p);
R:=Rect(p.X,p.Y,p.X,p.Y);
ClipCursor(@R);//锁定鼠标
end;
end;
begin
EnableMouse(False); //锁定
处理事务
EnableMouse(True); //解除
end
主Form有个图片,大约在中间的位置,双击后,showModal一个Form,鼠标刚才点在图片的那个坐标位置(当然,showModal的这个Form是没有图片的,但是位置和主Form相同,也就是屏幕中心)。通俗的说,在屏幕中间双击了鼠标,showmodal的form的中间也被点了鼠标,后者是我不愿意看到的。
begin
if not TaskProcessing then ;任务正在处理就不响应Click事件
begin
......
end;
end;再或者动态设置事件,Create TheForm时,设置TheForm.OnClick :=nil,完成任务后,再设置TheForm.OnClick :=FormClick;