全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1973
推到 Plurk!
推到 Facebook!

請問ShockWaveFlash的DragDrop問題?

答題得分者是:jow
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-26 10:37:00 IP:222.90.xxx.xxx 未訂閱
OS : Winxp Sp6
IDE:Delphi7

在Form1上增加一個Panel1(Align:alClient),在Panel1上又添加一個ShockWaveFlash1(Align:alClient),現在想從檔案總管drag一個.swf文檔在Form1上drop後能夠自動開始播放。

Q :現在drag一個.swf文檔在Form1上drop後,程式一點反應都沒有。問題出在什麼地方尚不清楚,望各位先進指點,謝謝!
...
procedure DropFile(var message:TWMDropFiles);message wm_DropFiles;
...
procedure TForm1.FormShow(Sender: TObject);
begin
DragAcceptFiles(Handle,True);
end;
...


procedure TForm1.DropFile(var message:TWMDropFiles);
var
p:array[0..254] of char;
i,n:word;
FileName:string;
begin
inherited;
n:=DragQueryFile(message.Drop,$ffffffff,nil,0);
for i:=0 to n-1 do
begin
DragQueryFile(message.Drop,G,@p,255);
FileName:=strpas(p);
if ExtractFileExt(FileName)='.swf' then
begin
ShockwaveFlash1.Movie :=FileName
ShockwaveFlash1.Play;
end;
end;
DragFinish(message.Drop);
end;



jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-26 11:22:14 IP:210.66.xxx.xxx 未訂閱
測試動作:

[code delphi]
unit fMain;


interface

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


type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormShow(Sender: TObject);
private
procedure WMDropFile(var message: TWMDropFiles); message WM_DROPFILES;
public
end;


var
Form1: TForm1;


implementation


uses ShellAPI;

{$R *.dfm}

procedure TForm1.WMDropFile(var message: TWMDropFiles);
var
P: array[0..254] of Char;
I, n: word;
FileName: string;
begin
inherited;
n := DragQueryFile(message.Drop, Cardinal(-1), nil, 0);
for i :=0 to n-1 do
begin
DragQueryFile(message.Drop,I,P,255);
FileName := StrPas(P);
if UpperCase(ExtractFileExt(FileName))='.TXT' then
ListBox1.Items.LoadFromFile(FileName);
end;
DragFinish(message.Drop);
end;


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


end.
[/code]


試試看!!

(1)
DragQueryFile(message.Drop,G,@p,255);
改為:
DragQueryFile(message.Drop, i, p, 255);
(2)
if ExtractFileExt(FileName)='.swf' then
改為:
if LowerCase(ExtractFileExt(FileName))='.swf' then

個人看法, 提供你參考



編輯記錄
jow 重新編輯於 2008-03-26 19:59:24, 註解 增貼測試碼‧
jow 重新編輯於 2008-03-26 19:59:48, 註解 無‧
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-27 16:51:28 IP:222.90.xxx.xxx 未訂閱
謝謝!是我太粗心了!
系統時間:2017-10-24 1:09:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!