我想和大家讨论一下关于拖放问题,类似于蚂蚁一样,但要比它复杂。
我写了一个拖放窗口下面是原代码
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;
这是窗口代码,现在让我们来讨论一下拖放的问题吧!
我写了一个拖放窗口下面是原代码
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;
这是窗口代码,现在让我们来讨论一下拖放的问题吧!
解决方案 »
- delphi7如何解释以下的数据(不知道是不是json)
- 请问在DELPHI中如何立即断开ADO连接??
- 以一个BMP图形为背景,可以在上面动态添加一些安防点,整张图可以放大缩小
- 如何在fr3.15里实现空表格打印
- 请问如何让Delphi绑定W3C Schema对XML进行解析?
- 关于在DELPHI中使用SQL的问题,请大家帮帮忙!!!!!!!!!!!
- ADOqurey 的 filter 如何用
- 高分求教大字段操做的问题,为什么有时候保存和取出来的东西不一样了?
- 精彩的控件,大家去down吧
- 在设计数据库时,是不是不用别名,就可以不配置bde?
- 如何在两个form之间传递参数
- 关于ADO错误的问题
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F009, 0);
end;
而是拖放,比如文本、文件等
我写了另外一段代码,我们付伦吧
unit Unit1;interfaceuses
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.
//本函数作用和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链接?