问题:怎样实现在DBImage控件上,用鼠标的左键点住,然后向左拉,就执行“前一记录”显示前一张图片向右拉就执行“后一记录”,显示后一张图片现在主要的问题出在,虽然可以捕捉到鼠标在图片上的拖动事件,
但不能判断他是向左还是向右。
procedure TForm1.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
各位有什么好的办法???

解决方案 »

  1.   

    不要用onmousemove()事件,用ondragdrop()和ondragover()来判断。
      

  2.   

    TO:zhangheaaa(竹) 我就是用ondragdrop()和ondragover()来判断啊
    可以捕捉到X的值,不过就难判断是向左还是向右啊
      

  3.   

    我想這樣
    當鼠標但即使記下x,y,
    當屬標移時記下x1,y1,
    如果x-x1>0則為右,<0則為左如何?
      

  4.   

    xufenglong(塞北星) 
    我也是这样想的,在MouseDown记下X的值,在ondragdrop()和ondragover()判断X的变化不过用了ondragdrop()和ondragover(),就捕捉不到MouseDown的值了,除非用右键好象,ondragdrop()和ondragover()比MouseDown的级别比较高,被他先捕捉了
      

  5.   

    用这两个事件:
    OnStartDrag & OnEndDrag 就可以了.
      

  6.   

    TO:longtusoft(神灯之主) IMAGE有OnStartDrag事件吗????????????????????????????????
      

  7.   

    各位再帮忙  Image1StartDrag没有坐标的X,Y的
    procedure TForm1.Image1StartDrag(Sender: TObject;
      var DragObject: TDragObject);
    procedure TForm1.Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
    Image1EndDrag的才有
      

  8.   

    試試在MouseDown\MouseMove\MouseUp中做
    MouseDown记下X的值
    MouseMove记下X1的值
    MouseUp判斷是<0還是>0
    不可以嗎?
      

  9.   

    对啊,只判断X就行了的,
    只是我用了ondragdrop()和ondragover(),
    就捕捉不到MouseDown的X值
      

  10.   

    回复人: xufenglong(塞北星) ( ) 信誉:100  2004-08-04 11:05:00  得分: 0  
     
     
       試試在MouseDown\MouseMove\MouseUp中做
    MouseDown记下X的值
    MouseMove记下X1的值
    MouseUp判斷是<0還是>0
    不可以嗎?
    -------------试过,MouseMove和MouseUp的效果不好用  
     
      

  11.   

    為甚麼不用DBNavigator實現
    我試一試
      

  12.   

    DBNavigator当然可以,不过不人性化啊,
    我要在图片上拉就可以的,多方便谢谢你xufenglong(塞北星) 
    你很热心
      

  13.   

    用ONMOUSEMOVE捕获(X,Y),用ONDRAGOVER捕获移动时候的鼠标坐标(X2,Y2)
    之后在判断是左还是右。
      

  14.   

    TO:  capoatguitar(达达)  你的方法 我试了,不行
    在procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    捕捉到的X值, 在执行 procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);之后,
    两个X的值就都一样了
    怎么判断?
      

  15.   

    只要IMAGE的DragMode 改成 dmAutomatic 就不能响应MouseDown
      

  16.   

    我想能不能在ondragover(),鼠标X的位置是不断变化的,
    能不能就在这一个事件里面,判断每次变化的是向左还是向右??这一个事件就行,因为,其他事件都是要鼠标放开,或者鼠标离开才触发
    我要实时的
      

  17.   

    1、在OnmouseDown事件中判断鼠标左键是否按下,按下则记录当前鼠标位置。
    2、在MouseMove事件中判断左键是否按下,是则计算当前鼠标位置和先前记录的横坐标差值,
       达到一定条件,比如移动了10个象素就播放图片(当然也可用个TIMER),同时清理以前记录的鼠标位置,为下
       一次做准备;不是则清掉原来的记录。
    3、如果想鼠标不在窗口上也响应就弄个HOOK,或MouseDoen捕获鼠标。
      

  18.   

    miky(miky) 谢谢,我试一下