procedure TForm2.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
beginImage1.Cursor:=crHandPoint;
end;
procedure TForm2.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
beginImage1.Cursor:=crDefault
end;根据代码应当实现当鼠标在image上按下时,鼠标形状为手型,鼠标抬起后鼠标形状恢复。但测试过程中发现bug1:鼠标左键不起作用(我没有对左右键做过限制啊)!
bug2:鼠标右键按下时鼠标形状不变,但移动一下鼠标,形状改变
bug3:鼠标右键松开时,鼠标形状还是维持手型,移动一下鼠标,鼠标形状还原!
无语!不知道是代码不对还是真的是bug,我用的是d2007,拿到d7下测试问题依旧
救命啊!!!
   

解决方案 »

  1.   

    好像没有什么意义的吧?
    真要做这种动作,继承控件的WndProc,捕获消息来处理。
      

  2.   


    procedure TForm1.img1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Screen.Cursor := crHandPoint;
    end;procedure TForm1.img1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Screen.Cursor := crDefault;
    end;
      

  3.   

    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Screen.Cursor := crHandPoint;
    end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Screen.Cursor := crArrow;
    end;
      

  4.   

    鼠标按下和抬起只是一瞬间的 你要在这一瞬间显示鼠标变化好像没什么意义吧?
    一般处理是在鼠标进入image的时候显示为手行,离开还原为原样,如果是这样的话你可以将iamge的cursor属性设为crHandPoint 不知道这样是不是你想要的呢?
    如果更复杂的应用就自己处理消息吧!
      

  5.   

    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    begin 
      Screen.Cursor := crHandPoint; 
    end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    begin 
      Screen.Cursor := crArrow; 
    end;
    响应好像都来不及,按照楼主的搞法
      

  6.   

    用screen.cursor可以了,谢谢诸位!