我在scollbox中放了一个image,图片超出显示的范围,
1.如何能让方向键(上下左右)可以移动图片;
2.如何实现让鼠标滑轮可以移动图片。

解决方案 »

  1.   

    OnMouseWheelUp
    OnMouseWheelDown
    OnKeyDown
    中写代码改变位置!但要注意要将各可视控件的TabStop全都设为False!否则方向键会改变焦点,导致下面的代码都无效!
      

  2.   

    不就是改变Left,Top吗?还能有什么?再加上判断语句,让其不要大于0,小于其父控件的长宽减Image的长宽!
      

  3.   

    抱歉,可能我题目叙述的不清楚image在scollbox中,可以看到全图,但要移动滚动条来实现,而我想要通过移动方向键实现滚动条的功能,移动鼠标滑轮实现上下浏览图片的功能
      

  4.   

    Sendmessage(ScrollBox1.Handle,WM_HSCROLL,SB_LINELEFT,0);
    Sendmessage(ScrollBox1.Handle,WM_HSCROLL,SB_LINERIGHT,0);
    Sendmessage(ScrollBox1.Handle,WM_VSCROLL,SB_LINEUP,0);
    Sendmessage(ScrollBox1.Handle,WM_VSCROLL,SB_LINEDOWN,0);
    或者
    ScrollBox1.HorzScrollBar.Position:=ScrollBox1.HorzScrollBar.Position+1;
    ScrollBox1.HorzScrollBar.Position:=ScrollBox1.HorzScrollBar.Position-1;
    ScrollBox1.VertScrollBar.Position:=ScrollBox1.HorzScrollBar.Position+1;
    ScrollBox1.VertScrollBar.Position:=ScrollBox1.HorzScrollBar.Position-1;
    还有
    ...方法太多了!关键是思路要开阔!
      

  5.   

    呵呵。
    我刚做过类似的程序。你可以模仿ACDSee里的图片移动功能,就是那个"手"
    拖动鼠标,即可实现图片的移动。
    代码如下:
    NewX, NewY, OldX, OldY, AppendX, AppendY: integer;
    gMouseDown: Boolean;在Image的onMouseDown中:  gMouseDown := true;
      OldX := X;
      OldY := Y;  AppendX := 0;
      AppendY := 0;
    在Image的onMouseMove中:
      if gMouseDown then begin
        NewX := X;
        NewY := Y;    AppendX := (NewX - OldX);
        AppendY := NewY - OldY;    ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position - AppendX;
        ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - AppendY;
      end;在Image的onMouseUp中:
      gMouseDown := false;
      

  6.   

    呵呵。
    我刚做过类似的程序。你可以模仿ACDSee里的图片移动功能,就是那个"手"
    拖动鼠标,即可实现图片的移动。
    代码如下:
    NewX, NewY, OldX, OldY, AppendX, AppendY: integer;
    gMouseDown: Boolean;在Image的onMouseDown中:  gMouseDown := true;
      OldX := X;
      OldY := Y;  AppendX := 0;
      AppendY := 0;
    在Image的onMouseMove中:
      if gMouseDown then begin
        NewX := X;
        NewY := Y;    AppendX := (NewX - OldX);
        AppendY := NewY - OldY;    ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position - AppendX;
        ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - AppendY;
      end;在Image的onMouseUp中:
      gMouseDown := false;
      

  7.   

    呵呵。
    我刚做过类似的程序。你可以模仿ACDSee里的图片移动功能,就是那个"手"
    拖动鼠标,即可实现图片的移动。
    代码如下:
    NewX, NewY, OldX, OldY, AppendX, AppendY: integer;
    gMouseDown: Boolean;在Image的onMouseDown中:  gMouseDown := true;
      OldX := X;
      OldY := Y;  AppendX := 0;
      AppendY := 0;
    在Image的onMouseMove中:
      if gMouseDown then begin
        NewX := X;
        NewY := Y;    AppendX := (NewX - OldX);
        AppendY := NewY - OldY;    ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position - AppendX;
        ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - AppendY;
      end;在Image的onMouseUp中:
      gMouseDown := false;