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

怎樣限制 Save Dialog 的路徑?

尚未結案
KFC123_60201
一般會員


發表:58
回覆:18
積分:15
註冊:2006-07-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-11-06 01:52:08 IP:139.78.xxx.xxx 訂閱
請問怎樣限制 Save Dialog 的路徑衹可以在某個指定的路徑下?例如,指定d:\abc\efg 為頂級目錄,則衹允許留在efg 中或跳它的的下級目錄中,但不能跑到efg 的上級目錄或其它path 去。
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-11-06 07:52:11 IP:59.125.xxx.xxx 訂閱
Open/Save Dialog 基礎元件好像不可以這樣做
必須自己設計,或修改 Open/Save Dialog 基礎的元件


===================引 用 KFC123_60201 文 章===================
請問怎樣限制 Save Dialog 的路徑衹可以在某個指定的路徑下?例如,指定d:\abc\efg 為頂級目錄,則衹允許留在efg 中或跳它的的下級目錄中,但不能跑到efg 的上級目錄或其它path 去。
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-11-06 11:48:00 IP:60.248.xxx.xxx 未訂閱
您好

貼給您RootKit之前回應的文章,或許是個思考方向
http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=93072

===================引 用 KFC123_60201 文 章===================
請問怎樣限制 Save Dialog 的路徑衹可以在某個指定的路徑下?例如,指定d:\abc\efg 為頂級目錄,則衹允許留在efg 中或跳它的的下級目錄中,但不能跑到efg 的上級目錄或其它path 去。
KFC123_60201
一般會員


發表:58
回覆:18
積分:15
註冊:2006-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-11-09 13:42:46 IP:139.78.xxx.xxx 訂閱
謝謝你的回覆。我看了那些代碼,也作了測試,那段代碼似乎可以屏蔽不想看到的文件,但無法限制頂級目錄的位置,也就是說最上層目錄衹能為默認的 Recent 、桌面等等,而不能是任意的其它目錄,即使把當前目錄設為其它任意的目錄,但還是可以切換到”更上層”的目錄去,這不是我想要的。我想修改一下TOpenDialog/TSaveDialog的代碼來實現這個功能,但不知怎樣下手!

===================引 用 pedro 文 章===================
您好

貼給您RootKit之前回應的文章,或許是個思考方向
http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=93072

===================引 用 KFC123_60201 文 章===================
請問怎樣限制 Save Dialog 的路徑衹可以在某個指定的路徑下?例如,指定d:\abc\efg 為頂級目錄,則衹允許留在efg 中或跳它的的下級目錄中,但不能跑到efg 的上級目錄或其它path 去。
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-11-10 22:16:26 IP:122.126.xxx.xxx 訂閱
參照 Delphi 源碼做就可以了。

隱藏 「移至上一層」
Button.cbSize := SizeOf(TTBButtonInfo);
Button.dwMask := TBIF_STATE;
Button.fsState := TBSTATE_HIDDEN or TBSTATE_INDETERMINATE;
hCltWnd := FindWindowEx(hWndMain, 0,'ToolbarWindow32', nil);
if hCltWnd <> 0 then
SendMessage(hCltWnd, TB_SETBUTTONINFO,TB_BTN_UPONELEVEL,Windows.LParam(@Button));

Diable 檔案名稱
hCltWnd := GetDlgItem(hWndMain,1152);
if hCltWnd <> 0 then EnableWindow(hCltWnd,False);

Diable 路徑
hCltWnd := GetDlgItem(hWndMain,1137);
if hCltWnd <> 0 then EnableWindow(hCltWnd,False);


編輯記錄
RootKit 重新編輯於 2009-11-10 22:17:10, 註解 無‧
KFC123_60201
一般會員


發表:58
回覆:18
積分:15
註冊:2006-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-11-11 14:00:26 IP:139.78.xxx.xxx 訂閱

感謝呀,這個問題困擾了我很久,終於解決了。

還有一個問題,我們可以在OpenDialog啟動前設定InitialDir,來指定初始當前目錄,但在它開啟後能不能動態地指定目前的目錄?我試過直接指定 InitialDir ,但沒有效

===================引 用 RootKit 文 章===================
參照 Delphi 源碼做就可以了。

隱藏 「移至上一層」
Button.cbSize := SizeOf(TTBButtonInfo);
Button.dwMask := TBIF_STATE;
Button.fsState := TBSTATE_HIDDEN or TBSTATE_INDETERMINATE;
hCltWnd := FindWindowEx(hWndMain, 0,'ToolbarWindow32', nil);
if hCltWnd <> 0 then
SendMessage(hCltWnd, TB_SETBUTTONINFO,TB_BTN_UPONELEVEL,Windows.LParam(@Button));

Diable 檔案名稱
hCltWnd := GetDlgItem(hWndMain,1152);
if hCltWnd <> 0 then EnableWindow(hCltWnd,False);

Diable 路徑
hCltWnd := GetDlgItem(hWndMain,1137);
if hCltWnd <> 0 then EnableWindow(hCltWnd,False);


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