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

請問如何取得滑鼠點選的檔案名稱及路徑?

答題得分者是:wameng
ddoollidelphi
一般會員


發表:2
回覆:3
積分:1
註冊:2007-06-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-01 17:10:22 IP:122.125.xxx.xxx 訂閱
各位先進好:

我想製作一個小程式,類似使用Media Player聽音樂時,用滑鼠點選想聽的音樂,拖曳到現正播放清單就可以加入播放檔案的功能。

以下是我想做的程式說明:
當滑鼠將選取的檔案拖曳到程式中的Memo或者ListBox之類的元件後,元件上會顯示被滑鼠拖曳的檔案名稱以及檔案路徑(可能多個或一個)。

請教各位先進,我可以用winapi來取得滑鼠點選的檔名及路徑嗎?在發問前我已先翻過ktop的文章,但並沒有尋找到類似的討論主題,同樣我也上了Google、Yahoo的搜尋引擎尋找過,曾有找到關於Winapi函式與函式庫的說明,以及少許的範例,但多數都是VB語法寫的,且也沒有找到關於取得滑鼠選取檔名的函數,不知道我有沒有漏看,還請各位先進多多包含。
因為這是老師出的題目,懇請各位先進可以給予我一些建議或者方向。我想先學習可以取得被滑鼠選取檔名的方法,再將取得的檔名加入Memo上顯示,我想這樣的概念應該是正確的,如果有誤希望各位先進可以給予指教。
由於我學習Delphi的語法僅在課程上,學習也有一學年的時間了,但還不會使用Delphi呼叫Winapi函數,如果有推薦的書籍、參考網站也希望各位先進可以不吝告知,先謝過各位耐心看完這篇問題,感激!

頭一次發問還請多包涵。
------
學習在挫折中成長
學習在逆境中萌芽
學習在論壇找寶藏
學習在程式找樂趣
By Delphi實習中的 諼
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-01 18:52:27 IP:203.73.xxx.xxx 訂閱
就以Form來說,當你將物件拖到Form上就會產生DragOver的事件,
你只要在對應的事件裡面描述你要的行為就可以,相關的資訊會在事件傳入的參數就提供給你。
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-01 23:21:25 IP:211.22.xxx.xxx 未訂閱
提供來源檔案資訊的VCL很多!最常用的就是 TShellTreeView或者是TFileListBox等,至於抓取來源檔案資訊的元件不管是MEMO或者是TListView等等都可以該VCL元件中偵測DRAGOVER事件發生時的來檔案源資訊是否是你需要的,以及在DRAGDROP事件記錄來源檔案的資訊,請參考~
ddoollidelphi
一般會員


發表:2
回覆:3
積分:1
註冊:2007-06-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-09-03 15:21:22 IP:140.128.xxx.xxx 訂閱
謝謝兩位前輩指教

但是我想前輩誤會我的意思了。我的意思並非form本身的元件拖曳到form上的元件,而是我開啟我的程式,然後從檔案總管或者桌面,選擇我要的檔案,再由滑鼠拖曳到程式的form上面的元件(Memo),所以我必須取得我滑鼠所拖曳的檔案名稱與路徑,顯示到程式的元件上面。

不知道這樣說明是否清楚了一些?
先謝過各位先進的指教了。
------
學習在挫折中成長
學習在逆境中萌芽
學習在論壇找寶藏
學習在程式找樂趣
By Delphi實習中的 諼
wameng
版主


發表:31
回覆:1336
積分:1183
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-03 17:31:54 IP:61.222.xxx.xxx 訂閱
關鍵字 WM_DROPFILES
ddoollidelphi
一般會員


發表:2
回覆:3
積分:1
註冊:2007-06-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-09-03 18:11:25 IP:140.128.xxx.xxx 訂閱
感激wameng版主的協助
我曉得搜尋的出發方向了,雖然還沒有試出可以使用的程式,不過大概知道往哪方面找資料了。感謝^^

------
學習在挫折中成長
學習在逆境中萌芽
學習在論壇找寶藏
學習在程式找樂趣
By Delphi實習中的 諼
wameng
版主


發表:31
回覆:1336
積分:1183
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-09-03 23:03:32 IP:61.31.xxx.xxx 訂閱
procedure TEVScrollBox.WMDROPFILES(var Message:TMessage);
var
nFiles : Integer;
FileName : String;
begin
With Message do
try
nFiles := DragQueryFile (wParam, $FFFFFFFF, nil, 0);

SetLength(FileName, 80);
DragQueryFile(wParam,0, PChar(Filename), 80);
FileName := PChar(FileName); {Filter #0};

if Assigned(fMadeMapdata) then fMadeMapdata.LoadDataFromFile(FileName);
finally
DragFinish (wParam);
end;
end;

if Assigned... 換掉即可。
wewe760109
一般會員


發表:9
回覆:14
積分:4
註冊:2007-06-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-09-04 11:17:29 IP:140.128.xxx.xxx 訂閱

.
編輯記錄
wewe760109 重新編輯於 2007-09-04 12:01:22, 註解 無‧
wewe760109 重新編輯於 2007-09-04 12:01:59, 註解 刪不掉...‧
ddoollidelphi
一般會員


發表:2
回覆:3
積分:1
註冊:2007-06-30

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-09-04 11:20:30 IP:140.128.xxx.xxx 訂閱

===================引 用 wameng 文 章===================
procedure TEVScrollBox.WMDROPFILES(var Message:TMessage);
var
? nFiles : Integer;
? FileName : String;
begin
? With Message do
? try
??? nFiles := DragQueryFile (wParam, $FFFFFFFF, nil, 0);

??? SetLength(FileName, 80);
??? DragQueryFile(wParam,0, PChar(Filename), 80);
??? FileName := PChar(FileName); {Filter #0};

??? if Assigned(fMadeMapdata) then fMadeMapdata.LoadDataFromFile(FileName);
? finally
??? DragFinish (wParam);
? end;
end;

if Assigned... 換掉即可。


謝謝wameng
問題已經解決了~

(不好意思~上方那個是同學的帳號,忘了登出就回覆,這個才是我的帳號...^^")
------
學習在挫折中成長
學習在逆境中萌芽
學習在論壇找寶藏
學習在程式找樂趣
By Delphi實習中的 諼
編輯記錄
ddoollidelphi 重新編輯於 2007-09-04 11:21:30, 註解 無‧
ddoollidelphi 重新編輯於 2007-09-04 11:24:02, 註解 無‧
ddoollidelphi 重新編輯於 2007-09-04 12:50:23, 註解 無‧
ddoollidelphi 重新編輯於 2007-09-04 14:39:06, 註解 無‧
系統時間:2017-10-20 20:10:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!