FormOnCreate:
  image.ShowHint := True;image.MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
  image.Hint := IntToStr(X);问题:
  由于鼠标移动的时候X会随之变化,当X变化就需要在鼠标下面显示一个hint,以标识此时X;
  发现第一次有Hint,但后来X变化了Hint并不变化,请问这个该怎么做?谢谢!

解决方案 »

  1.   

    看了半天forms单元里面,TApplication的代码,没看出什么头绪来.
    简单的办法:自己放个小panel之类的,去移动位置,改变文字好了。
      

  2.   

    楼主测试的没错,
    我也测试了下,后面在移动的时候,只有单击后才会显示出hint
    我还正在想对策..
      

  3.   

    image.MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); 
      image.Hint := IntToStr(X); 
    Refresh; //加上这句话 试一下
      

  4.   

    fangsp:
           加了Refresh也不行啊,是不是正如shadowstar所说不能用Hint?能不能讲下为什么不能呢?谢谢!
      

  5.   

    只有当鼠标从控件外面移到控件上的时候才会显示hint,在控件内部移动时应该不会更新hint的。
    自己画一个小窗体上去吧。不能用panel,否则如果hint的范围超过panel的容器边界的时候不能完整显示。
      

  6.   

    Application.ActivateHint(Mouse.CursorPos); 
      

  7.   

    jiju:这个也是不能达到目的的。
    请问朋友们,有推荐的第三方控件么?有的话发给我一份,谢谢了,[email protected]这样的功能大家应该也碰到不少吧。
      

  8.   

    参考:http://www.delphibbs.com/delphibbs/dispq.asp?lid=100788
    做了个测试发现hint闪烁得太厉害procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
      aHint: THintWindow;
      aRect: TRect;
      p: TPoint;
    begin
      p := Point(X,Y);
      p :=clientToScreen(p);
      aRect.left   := p.x;
      aRect.top    := p.y + 30;
      aRect.right  := aRect.Left + 50;
      aRect.bottom := aRect.Top + 50;
      aHint := THintWindow.Create(Self);
      aHint.Color := clWindow;
      aHint.ActivateHint(aRect, 'test');
      aHint.ReleaseHandle;
      FreeAndNil(aHint);
    end;请问朋友如何去除闪烁?
      

  9.   

    呵呵,加上sleep(100)就可以了啊
    结贴了。