TImage拖動 |
尚未結案
|
蔚空_1
一般會員 發表:6 回覆:0 積分:1 註冊:2005-10-13 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls; type TBaseForm = class(TForm) ScrollBox1: TScrollBox; Image1: TImage; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private xx, yy: Integer; procedure MyMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure MyMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure MyMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure setmode(index: Integer; ctl: twincontrol); public end; var BaseForm: TBaseForm; implementation {$R *.dfm} procedure TBaseForm.MyMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var ctl: Tcontrol; begin ctl := Tcontrol(Sender); setcapturecontrol(ctl); xx := X; yy := Y; end; procedure TBaseForm.MyMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var ct: Tcontrol; begin ct := getcapturecontrol; if ct = nil then exit; ct.left := ct.left + X - xx; ct.top := ct.top + Y - yy; end; procedure TBaseForm.MyMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; end; procedure TBaseForm.setmode(index: Integer; ctl: twincontrol); var i: Integer; begin ScrollBox1.DoubleBuffered := True; case index of 0: begin Screen.Cursor:=crDefault; for i := 0 to ctl.Controlcount - 1 do begin TScrollBox(ctl.Controls[i]).OnMouseMove := nil; TScrollBox(ctl.Controls[i]).OnMousedown := nil; TScrollBox(ctl.Controls[i]).OnMouseup := nil; end; end; 1: begin Screen.Cursor:=crHandPoint; for i := 0 to ctl.Controlcount - 1 do begin if ctl.Controls[i].Parent = ctl then begin TScrollBox(ctl.Controls[i]).OnMouseMove := MyMouseMove; TScrollBox(ctl.Controls[i]).OnMousedown := MyMouseDown; TScrollBox(ctl.Controls[i]).OnMouseup := MyMouseUp; end; end; end; end; end; procedure TBaseForm.FormCreate(Sender: TObject); begin setmode(1, ScrollBox1); end; procedure TBaseForm.FormClose(Sender: TObject; var Action: TCloseAction); begin setmode(0, ScrollBox1); end; end.风花雪月 e梦情缘 网络代号:wnhoo or sos_admin 网名:e梦缘 Mail:wnhoo@163.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |