佐々木義照さん:
> total := DragQueryFile(msg.Drop, -1, nil, 0);でエラーになります。
DragQueryFile(msg.Drop, Cardinal(-1), nil, 0) ではどうですか?
――――――――――――――――――――――――――――――――――――
株式会社イマジオム 代表取締役 高木太郎
〒316-0024 茨城県 日立市 水木町 1-11-10
電話:0294-28-0147
ファクシミリ:0294-28-0148
電子メール:tarou_...@imageom.co.jp
ホームページ:http://www.imageom.co.jp/
今度はエラーにならず、コンパイルできました。
でも、この procedure TForm2.WMDropFiles(var msg: TWMDropFiles);にイベントが届いてないみたいです。
ListBox1.Items.Add(FileName);になんの表示もされません。
再度、ご教示願います。
|今度はエラーにならず、コンパイルできました。
Delphi のデザイナで
フォームをWクリックしてソースコードが現れてからコンパイル
してみてください
違うかな?
o(^^ )o--------⊆^U)┬┬~...
Terry
やってみましたが・・・
ダメでした。
---佐々木義照---
同じコードで、Delphi2009Pro で試してみましたが、問題なく、
ListBoxにファイル名がドラッグアンドドロップした分だけ表示さ
れます。
原因は、違うところにありそうですが。
------------------------------------------------------------------
Windows Vista Ultimate *64 / Delphi 2007 Pro / Delphi 2009 Pro
Yasuhiko Yoriki 寄木康彦
mailto:yor...@yoriki.jp http://www.yoriki.jp/
私は Vista と ターボdelphi ですが。そのへんでしょうか?
コードの途中 (total :=DragQueryFile(msg.Drop, Cardinal(-1), nil, 0);) にブレークポイントを入れても止まりません。
ここの procedure は通ってないということですよね。
今日は遅いので、明日(?)お願致します。
---佐々木義照---
|コードの途中 (total :=DragQueryFile(msg.Drop, Cardinal(-1), nil, 0);)
|にブレークポイントを入れても止まりません。
DragAcceptFiles(Handle, True);
にブレークポイントでは止まりますか?
ここは、ブレークポイントで止まります。
ん~~。何が原因なんでしょう?
今日は、もう寝ます。
ありがとうございます。
---佐々木義照---
WindowsXP SP3
Delphi7
こちらでも同じ場所でエラーになりました。
total := DragQueryFile(msg.Drop, -1, nil, 0);
[エラー] Unit1.pas(36): 定数式が範囲を越えました
なので、以下の様に変更してみてはどうでしょう?
total := DragQueryFile(msg.Drop, Cardinal(-1), nil, 0);
--
ムーンドルド
do1...@king-postman.com
>なので、以下の様に変更してみてはどうでしょう?
> total := DragQueryFile(msg.Drop, Cardinal(-1), nil, 0);
・・・って既に同じ事を高木さんが言ってますね、失礼しました。
以下自分が以前に書いたコードです。
参考になりますでしょうか?
-------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls, ShellAPI;
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
procedure FileDropHandler(var Msg: TWMDropFiles);
message WM_DROPFILES;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FileDropHandler(var Msg: TWMDropFiles);
var
Num: Word;
P: Integer;
FileName: array [0..255] of Char;
begin
//自分のウィンドゥをアクティブに設定
SetForegroundWindow(Self.Handle);
Self.SetFocus;
//ドロップされたファイルとフォルダを取得
Num := DragQueryFile(Msg.Drop, Cardinal(-1), nil, 0);
for P:= 0 to Num - 1 do
begin
DragQueryFile(Msg.Drop, P, FileName, SizeOf(FileName) - 1);
ListBox1.Items.Add(FileName);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//メインフォームへのファイルのドラッグを許可
DragAcceptFiles(Self.Handle, LongBool(True));
end;
end.
はい、解決です。
> 吐き出されたexe本体で
こっちでは正常に動きました。
皆さんありがとうございます。