我想和大家讨论一下关于拖放问题

hgq911 2002-04-26 08:35:38
我想和大家讨论一下关于拖放问题,类似于蚂蚁一样,但要比它复杂。
我写了一个拖放窗口下面是原代码
private
{ Private declarations }
//创建拖放窗口
procedure Createparams(Var Params:TCreateParams);override;
//拖放窗口的移动
procedure WMNCHitTest( var Msg : TWMNCHitTest );message wm_NCHitTest;
………………
//在窗口上按下鼠标移动窗口
procedure TfrmDarg.WMNCHitTest( var Msg : TWMNCHitTest );
begin
if GetAsyncKeyState(VK_LButton) < 0 then
Msg.Result := HTCaption
else
Msg.Result := HTCLient;
end;
//创建窗口
procedure TfrmDarg.Createparams(var Params:TCreateParams);
begin
Inherited CreateParams(Params);
With Params do
begin
//Width:=40;
//Height:=40;
Style :=WS_CAPTION;
Style :=WS_POPUP;
EXStyle:=ExStyle or WS_EX_TOPMOST;// OR WS_EX_ACCEPTFILES or WS_DLGFRAME or WM_NCHITTEST;
WndParent:=GetDeskTopWindow();
end;
end;
这是窗口代码,现在让我们来讨论一下拖放的问题吧!

...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
man8888 2003-01-06
  • 打赏
  • 举报
回复
{
//本函数作用和DragAcceptFiles(Handle, true);
//相同所以注释
procedure TForm_Main.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle:=Params.ExStyle or WS_EX_ACCEPTFILES;
end;}

formCreate事件里调用就可以了,简单点,只是怎样支持拖放文本,比如Web链接?
eulb 2002-05-06
  • 打赏
  • 举报
回复
你的意思是拖放文本
可你的代码中,如果拖入的一个文件,会怎么样?
nne998 2002-04-26
  • 打赏
  • 举报
回复
拖窗体只需:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F009, 0);
end;
hgq911 2002-04-26
  • 打赏
  • 举报
回复
我知道,我现在的问题是不是窗口
而是拖放,比如文本、文件等
我写了另外一段代码,我们付伦吧
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Memo1: TMemo;
procedure CreateParams(var Params:TCreateParams);override;
private
{ Private declarations }
procedure WMDropFiles(var Msg:TWMDropFiles);message WM_DROPFILES;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle:=Params.ExStyle or WS_EX_ACCEPTFILES;
end;

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
FCount:integer;
i:integer;
P:pchar;
begin
GetMem(P,MAX_PATH);
try
FCount:=DragQueryFile(Msg.Drop,DWORD(-1),nil,0);
for i:=0 to FCount-1 do
begin
DragQueryFile(Msg.Drop,i,P,MAX_PATH);
Memo1.Lines.Add(StrPas(P));
end;
DragFinish(Msg.Drop);
finally
FreeMem(P);
end;
inherited;
end;

end.

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧