FTPサーバーからのファイルのロードについて教えてください。
≡目的≡
IdFTPClient を使ってファイルのリストを取得し、FileView にファイル名リストを
表示します。
ファイル名をクリックしてWindows上の任意のフォルダにドラッグ&ドロップを
行いたい
≡環境≡
クライアント:
WindowsXP で、Delphi7 です。
サーバー:
FTPサーバアドレス:192.168.1.1
ユーザー名:server
パスワード:system
≡Windows上≡
IE のアドレスバーに『ftp://server:system@192.168.1.1/filedata』と
設定すると、FTPサーバーのフォルダ(filedata)上の内容が表示
されます。この状態で、
Windows上に適当なフォルダを作成し、作成したディレクトリの
ウィンドウを開いて、ドラッグ&ドロップを行うと可能です。
≡プログラム≡
IdFTPClient を使ってファイルのリストを取得し、FileView にファイル名リストを
表示します。
ファイル名をクリックしてWindows上の任意のフォルダにドラッグ&ドロップを
行いたいのですが
≡試み≡
DelphiQ&A 150選 の FileDrop や APIShell を使用してみましたが
カーソルアイコンが禁止マークでドロップできませんでした。
どなたかわかる方お願いします。
調べてみたら意外と難しそうですね。
CFSTR_FILEDESCRIPTOR や CFSTR_FILECONTENTS を使えば出来そうですがそれから先が不明。
誰かやり方ご存知の方いらっしゃませんか
引き続きですが、
他のアプリケーションにドロップしたときに
ドロップ処理が始まる前に自アプリケーションで
ドロップのイベント等を発生させて
その後で他アプリケーションのドロップ処理が始まる
ってできないのでしょうか?
そうすれば
ドロップする前にFTPサーバーからファイルを読み込んで
テンポラリフォルダに一度保存しておいてから
そのリストをドロップリストに渡してやれば
時間はかかるけど処理できそうな気が・・・
無理なんでしょうかね。
ちなみにこの逆
ドラッグ(マウスダウン)のイベントで
先にFTPサーバーからファイルを取得してテンポラリに
ゲットしてからってのはやったのですが
小さいファイル1つだとできるのですが、
複数やサイズの大きいものだとちょっと無理でした。
FTP うんぬんは質問の意味がよくわかりませんが、そのまえに OLE DragDrop が
できればいいのではないかと思います。
エクスプローラ等から作成したアプリケーションにファイルをコピーするには?
https://www.petitmonte.com/bbs/answers?question_id=637
(質問のタイトルの意味が逆ですが)
http://www.users.on.net/johnson/delphi/
に Drag & Drop Component Suiteがあります。
Version 3.7と 4.0がありますが、4.0のサンプルに参考になりそうなものがありそうです。(そのものずばりはありませんが)
みなさんお世話になります。
TWebBrowser をフォームにはりつけ
Navigate('ftp://server:system@192.168.1.1);
を呼び出すと、表示され、
この場合だとファイルは自由にドラッグ&ドロップできました。
でも、仕様が変わってしまう・・・
このばあいってどうやってるんでしょうか?
>TWebBrowser をフォームにはりつけ
>Navigate('ftp://server:system@192.168.1.1);
>を呼び出すと、表示され、
>この場合だとファイルは自由にドラッグ&ドロップできました
TWebBrowserはIEのコンポーネントですのでそのままドラッグできても不思議ではありませんよね?
皆さんご無沙汰しております。
あれから、試行錯誤して現在このような状態になっています。
フォーム上に
Memo1,Memo2,Memo3 をはりつけます。
使えるコンポーネント100選から TDropSourceEx を2つ使用し、
Memo1、Memo2 で使うようにします。
Delphi3 Q&A の TFileDrop を3つ使用し、
Memo1、Memo2、Memo3 で使うようにします。
Memo1でドラッグした場合は、
Memo2、Memo3、デスクトップ等コピーができます。
Memo2でドラッグした場合は、
Memo1、Memo3にはコピーできません(ドロップできない)が
デスクトップにはFTPサーバーからコピーができました。
Memo1,Memo3 でドロップできて、
そのファイルリスト(ftp://〜のままでもよい)を取得できれば
TIdFTP を使ってファイルのダウンロードができるのですが、
何か方法はありませんでしょうか?
procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
DropSourceEx1.DSFileName.Add('D:\Debug\Test1.txt');
DropSourceEx1.DSFileName.Add('D:\Debug\Test2.txt');
end;
procedure TForm1.Memo2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
DropSourceEx2.DSFileName.Add('ftp://User:Pass:192.168.1.1/Test1.txt');
DropSourceEx2.DSFileName.Add('ftp://User:Pass:192.168.1.1/Test2.txt');
end;
procedure TForm1.FileDrop1FileDrop(Sender: TObject; Num: Integer; Files: TStrings; X, Y: Integer);
begin
Memo1.Lines.Add(Files.Text);
end;
procedure TForm1.FileDrop2FileDrop(Sender: TObject; Num: Integer; Files: TStrings; X, Y: Integer);
begin
Memo2.Lines.Add(Files.Text);
end;
procedure TForm1.FileDrop3FileDrop(Sender: TObject; Num: Integer; Files: TStrings; X, Y: Integer);
begin
Memo3.Lines.Add(Files.Text);
end;
ツイート | ![]() |