怎样在delphi中实现控件和窗体的拖拽

下面这2种方法都能实现对控件和窗体的拖拽

方法1

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  SendMessage(Handle,WM_NCLBUTTONDOWN,HTCAPTION,0);
end;
 

方法2

  public
    { public declarations }
    posX, posY: Integer;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  posX := Mouse.CursorPos.X - Form1.Left;
  posY := Mouse.CursorPos.Y - Form1.Top;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if Shift =[ssLeft] then
  begin
    Form1.Left := Mouse.CursorPos.X - posX; // 新的位置
    Form1.Top := Mouse.CursorPos.Y - posY;
  end;
end;

参考:http://www.cnblogs.com/xe2011/p/3426281.html

时间: 2025-01-06 05:53:32

怎样在delphi中实现控件和窗体的拖拽的相关文章

Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决

Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决 EmbeddedWBWebBrowserDelphi 最近用EmbeddedWB控件做浏览器相关应用的时候,发现有些网页只要一打开就一定会蹦出一个“Invalid floating point operation”异常(关掉异常对话框以后,浏览器无响应),而程序仅仅是一句 WebBrowser1.Navigate(Edit1.Text);貌似很多含有Silverlight

独家原创,拖拽任意控件移动任意目标,拖拽控件移动整个窗体

独家原创,拖拽任意控件移动任意目标,拖拽控件移动整个窗体,在无边框窗体及其友好的实现拖拽移动窗体 http://www.cnblogs.com/vonly/ only原创首发,vonly.net 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Configuration; 5 using System.Diagnostics; 6 using Sys

在delphi中ocx控件的安装

第一步: 使用过Activex的人都知道,Activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的Activex控件注册,但如果你拿到的一个控件需要手动注册怎么办呢?如果修改注册表那就太麻烦了,在Windows的system文件夹下有一个regsvr32.exe的程序,它就是Windows自带的Activex注册和反注册工具.它的用法为: regsver32详解 regsvr32 [/s] [/n] [/i(:cmdline)] dllname 其中dllname为ac

Delphi中Undac控件连接MYSQL数据库问题总结

1.数据库挂到cxgrid上,中文显示不正确 我调试了好长时间,怀疑是编码问题,mysql的编码方式我都试过了,都不可以. 解决问题过程: (1).在dos系统下进入mysql数据库输入show variables like 'char%'; 我考虑可能是character_set_connection的编码有问题,于是开始设置它的编码方式,但是,这个编码方式重新启动数据库还是原来的编码方式.当然可以mysql数据库配置文件中设置,但是不是这个原因. (2).考虑到可能是数据库字符集编码方式问题

[转]Delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法

procedure TForm1.Button1Click(Sender: TObject); var jpg: TJPEGImage; // 要use Jpeg单元 begin // 显示jpg大图片的方式 jpg := TJPEGImage.Create; jpg.LoadFromFile(getcurrentdir() + '\pic.jpg'); Image1.Picture.Bitmap.Assign(jpg); // 因为 img 控件是基于bmp的 jpg.Free; end; p

Delphi中基本控件之SaveDialog控件的使用总结

首先向Form窗体拖一个SaveDialog控件,Name属性改为:dlgSave,然后添加一个按钮,Caption属性改为:浏览,Name属性改为:btnBrowse. 然后双击浏览按钮添加如下代码: procedure Tfoffertool.btnbrowseClick(Sender: TObject); var filePath :string; begin dlgSave.Title := '保存文件路径'; //设置浏览对话框标题名 dlgSave.Filter:= '文本文件(*.

[转载]: delphi中XLSReadWrite控件的使用(2)---delphi XE下安装

一.下载 官方下载网址: http://www.axolot.com/components/download.htm 从这里可以下载到从Delphi5到DelphiXE全部支持的版本. 二.软件安装 下载下来的文件是exe格式,可以直接安装,一路next即可. 按照默认安装,会在: C:\Documents and Settings\All Users\Documents\RAD Studio\8.0  路径下生成XLSRWII4_D2011.bpl,安装时需要使用. C:\Program Fi

在delphi中实现控件的拖拽

提示:可以添加一个布尔来控制可否拖动的状态,这里提供所有都能拖动的方法. 1 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; 2 Shift: TShiftState; X, Y: Integer); 3 begin 4 ReleaseCapture; 5 SendMessage(Handle,WM_NCLBUTTONDOWN,HTCAPTION,0); 6 end;

转 Delphi中XLSReadWrite控件的使用(2)---基本应用

unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XLSReadWriteII4, XLSFonts4, CellFormats4, BIFFRecsII4; type TfrmMain = class(TForm) Label1: TLabel; Button1: TButton; edFilename: