⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitfrmmain.pas

📁 《Delphi7编程100例》代码,书配资料
💻 PAS
字号:
unit unitFrmMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Image1: TImage;
    Label1: TLabel;
    procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var origin: Tpoint;
  image_left: integer;
  image_top: integer;
  visa1: Tpoint; //鼠标当前位置相对图像右下角的坐标
  visa2: Tpoint; //鼠标当前位置相对图像左上角的坐标
  canmove: boolean;

{$R *.DFM}

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
    begin
      origin.x := X;
      origin.y := Y;
      image_left := image1.left;
      image_top := image1.top;
      visa1.x := X - (image1.width - panel2.width + image1.left);
      visa1.y := Y - (image1.height - panel2.height + image1.top);
      visa2.x := X - image1.left;
      visa2.y := Y - image1.top;
      canmove := true;
    end;
end;


procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if canmove then
    begin
      if X < visa1.x then X := visa1.x;
      if X > visa2.x then X := visa2.x;
      if Y < visa1.y then Y := visa1.y;
      if Y > visa2.y then Y := visa2.y;
      image1.left := image_left + (X - origin.x);
      image1.top := image_top + (Y - origin.y);
    end;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -