2012年11月5日月曜日

Drag and Drop Suite 2

数個前に Drag and Drop Suite を紹介しました。
これで、一見落着に思えたのですが、1つ問題が出てきました。
OnGetStream イベントで戻す値は、AStream だけです。
AStream に nil を返すと、false と判断されます(ドロップに失敗)。
このとき、続くデータが存在したとしても、それ以降全ての処理がキャンセルされてしまいます。

例えば、

Data := TVirtualFileStreamDataFormat(dataFormatSource.DataFormat);
Data.FileNames.Clear;
 
for i := 0 to FTargets.Count - 1 do
Data.FilesNames.Add(FTargets[i]);

と、していたときに、最初の一個で失敗すると、全部失敗します。

これでは、FTP 系のソフトの操作として問題があるので、ソースを書き換えてしまいます。
DragDropFile.pas の 2476 行目に OnGetStream を呼ぶ記述があります。
その下に、Result := True; と書いて、常に成功状態にします。

FOnGetStream(Self, Index, Stream);
Result := True;

これだけで、OKです。
作者とコンタクトを取りたいけど、英語ができない……。

0 件のコメント:

コメントを投稿