Drag And Drop

Zalm
Дата: 27.02.2014 16:09:20
Сделал все как в примерах, все 1 в 1, как в этом примере и как в этом, но форме абсолютно никогда не приходит сообщение WM_DropFiles, даже через WndProc смотрел, тоже она его никогда не получает после перетаскивания и броска файлов в окно :( в чем может быть причина?

uses  ShellAPI;
protected
    procedure WMDropFiles(var Msg: TMessage); message wm_DropFiles; 
end;
////
 
procedure TForm1.WMDropFiles(var Msg: TMessage);
var 
   Filename: array[0 .. 256] of Char;
   Count   : integer;
begin
 DragQueryFile( THandle(Msg.WParam), 0, { номер файла } Filename,SizeOf(Filename) ) ;
// в переменной Filename будет сохранено имя брошенного файла
  DragFinish(THandle(Msg.WParam));
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True); // разрешаем форме принимать файлы
end;
j2me
Дата: 27.02.2014 20:46:24
100% work code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure WMDROPFILES(var Msg: TMessage); message WM_DROPFILES;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True);
end;

procedure TForm1.WMDROPFILES(var Msg: TMessage);
begin
  ShowMessage(IntToStr(DragQueryFile(Msg.WParam, $ffffffff, nil, 0)));
end;

end.
Zalm
Дата: 28.02.2014 03:16:05
j2me
100% work code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure WMDROPFILES(var Msg: TMessage); message WM_DROPFILES;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True);
end;

procedure TForm1.WMDROPFILES(var Msg: TMessage);
begin
  ShowMessage(IntToStr(DragQueryFile(Msg.WParam, $ffffffff, nil, 0)));
end;

end.


Картинка с другого сайта.

Собрал один в один, не работает. Может у меня какая-то настройка где-то плохо настроена?
Zalm
Дата: 28.02.2014 03:18:31
Оказывается не работает только в режиме дебага. Это так и задумано?
fd00ch
Дата: 28.02.2014 03:56:50
Zalm, сравни, интереса ради, Handle внутри FormCreate и Button1Click