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

請問: 外部視窗拖曳檔案到 Form中

答題得分者是:tuga
larrytyan
一般會員


發表:51
回覆:38
積分:17
註冊:2004-08-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2018-03-23 17:32:33 IP:118.163.xxx.xxx 未訂閱
請問: 我已經知道該如何由外部視窗拖曳文字檔到 Form上, 並顯示於 Tedit 元件,
但是如果 Form上有多個 Tedit 元件,該如何拖曳到指定的 Tedit 元件並顯示呢??

還是能有範例可以提供參考一下,謝謝
tuga
高階會員


發表:16
回覆:109
積分:120
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2018-03-24 19:19:24 IP:1.171.xxx.xxx 未訂閱
用 tedit 的 DragDrop 可以達成您要的嗎 ?
procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin

end;
larrytyan
一般會員


發表:51
回覆:38
積分:17
註冊:2004-08-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2018-03-27 09:37:06 IP:118.163.xxx.xxx 未訂閱
不行,tedit 的 DragDrop 用在 Form 內部可以, 可是從外部拖曳就不行,
請問還有神人可以幫我解決這個難題嗎?


===================引 用 tuga 文 章===================
用 tedit 的 DragDrop 可以達成您要的嗎 ?
procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin

end;
larrytyan
一般會員


發表:51
回覆:38
積分:17
註冊:2004-08-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2018-03-28 11:42:46 IP:118.163.xxx.xxx 未訂閱
自問自答:
問題已經解決了,

WMDropFiles(var Msg: TWMDropFiles) 中增加判斷滑鼠所在元件名稱


procedure TFrom1.WMDropFiles(var Msg: TWMDropFiles);
var filename: PChar;
length: LongWord;

pd:TPoint;
WinCon : TWinControl;
WND : HWND;
cmpComponent:TComponent;

begin
GetCursorPos(pd);
WND := Handle;
repeat
WinCon := FindControl(WND);
WND := ChildWindowFromPoint(WinCon.Handle,WinCon.ScreenToClient(pd));
if (WND = 0) or (not WinCon.Showing) or (not WinCon.CanFocus) then //增加判斷 showing focus
exit;
until (WND = WinCon.Handle) or (WinCon.ControlCount <= 0);
cmpComponent := FindComponent(wincon.Name);


if cmpComponent.Name = 'DBGrid1' then
begin
length:= DragQueryFile(Msg.Drop, 0, NIL, 0);
filename:= StrAlloc(length 1);
DragQueryFile(Msg.Drop,0,filename,length 1);
{do something with filename}

ShowMessage(filename);

Msg.Result:=0;
inherited;
end;
end;






===================引 用 larrytyan 文 章===================
不行,tedit 的 DragDrop 用在 Form 內部可以, 可是從外部拖曳就不行,
請問還有神人可以幫我解決這個難題嗎?


===================引 用 tuga 文 章===================
用 tedit 的 DragDrop 可以達成您要的嗎 ?
procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin

end;
系統時間:2024-05-05 18:55:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!