怎样做到类似ACDSee的移动功能,当图片较大时鼠标变成"手",并可以移动图片;另外当按住ctrl键时,鼠标变成"放大"形状,点击鼠标能放大图形.
解决方案 »
- 请教,类似一个QQ登录框的下拉框删除QQ号码的功能,使用COMBOBOX
- 我下了odac,只能返回6个字段,有没有新的版本没有字段个数的限制,又没有使用期限限制呢?
- 监控文件关闭
- 用SQL建立触发器,出现了问题。很急。
- ***吐血求救!***谁能告诉我winfax怎么设置的?(先付50分,有答案后再付800分)
- 我没有用过Installshield ,大家帮忙提供一些有关书籍或者技术资料下载的地方,都给分!
- 1000分请教内存溢出问题
- qrgroup不能识别datamodule里的数据库么?
- ADO连接超时的问题 (timeout Expired)
- 日期问题! 如何求两个日期之间有几天?
- StringGrid破控件,谁能实现改变单元格字体!
- 动态建立控件是否会使程序小一些?
Screen.Cursor:=crDefault;OnMouseMove事件中编写代码根据X,Y的值,长,宽等数据移动Image控件!
Shift: TShiftState; X, Y: Integer);
begin
allow_move:=0;
if (button=mbleft) and (img1.Tag>0) then
begin
allow_move:=1;
starttop:=img1.top;
startleft:=img1.left; GetCursorPos(hand_pt); //获取光标位置
img1.Cursor:=crhandpoint;
end;
end;
procedure Tmain.img1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
d_x,d_y:integer;
now_pt:Tpoint;
begin
if allow_move=0 then
exit;
GetCursorPos(now_pt); //获取光标位置
d_x:=now_pt.x-hand_pt.x;
d_y:=now_pt.y-hand_pt.y;
if img1.Tag>0 then
begin
if d_y<>0 then
begin
img1.top:=startTop+d_y;
end;
if d_x<>0 then
begin
img1.left:=startleft+d_x;
end;
end;
end;
procedure Tmain.img1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if allow_move=1 then
allow_move:=0;
end;
procedure TTMainWnd.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then
begin
ReleaseCapture;
sendmessage(Handle,WM_SYSCOMMAND,SC_MOVE or htclient,0);
self.Hide;
self.Show;
end;
end;