捕获鼠标后,鼠标不变形,是这样的吗?(200分)

  • 主题发起人 主题发起人 nullbert21
  • 开始时间 开始时间
N

nullbert21

Unregistered / Unconfirmed
GUEST, unregistred user!
大家知道窗体是可以拉伸的,我想让我的chart控件也具有这种属性
第一个问题,鼠标在控件左上角变成拉伸状态
我这样做:
procedure TForm1.Chart11MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var newrect:trect;
begin
newpoint:=clienttoscreen(point(x,y));
setcapture(chart11.Handle);
if(abs(x)<5)and(abs(y)<5)then
begin
cursor:=crhandpoint;
 end;
这样做的问题是,如果我不捕获鼠标,鼠标在控件外不响应,
如果我捕获鼠标,则鼠标在满足条件时不变形,
是这样的吧
那么,大家有什么好的办法没有?
谢谢!
 
躺做平:知道你就说,不知道我也不怪你,你不要有事无事瞎起哄。一堆垃圾!
 
如果鼠标还在Chart上,要用Chart.Cursor :=
其实最好是用SetCursor函数,比Screen.Cursor什么的都有效
 
你是想鼠标在chart的边缘范围变形?
 
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (x<5) and (y<5) then
begin
Chart1.Cursor := crSizeNWSE;
application.HandleMessage;
end
else Chart1.Cursor := crdefault;

end;
 
建议加一panel
chart在panel中
注意: chart小于panel(有一边缘)
 
我的代码改了:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
arect:=chart11.BoundsRect;
if (abs(x-arect.Left)<5)and(abs(y-arect.Top)<5)then
begin
cursor:=crsizenwse;
if draging then
begin
newrect:=rect(x,y,arect.Right,arect.Bottom);
chart11.BoundsRect:=newrect;
chart11.Repaint;
end;
end else cursor:=crdefault;
end;
这样画速度太慢,如果鼠标移动快一点就不行了,谁有好的办法?
 
后退
顶部