線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4157
推到 Plurk!
推到 Facebook!

有關OpenDialog的使用

尚未結案
perry722
一般會員


發表:27
回覆:11
積分:7
註冊:2004-05-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-06 12:52:52 IP:202.175.xxx.xxx 未訂閱
各位,當使用OpenDialog時,可不可以指定用戶只能選擇指定的Drive呢?例如我只想用戶可選擇Net Drive上的文件,用OpenDialog可以做到這個功能嗎?如果不能又有什麼好方法呢? 1437
------
1437
wameng
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-06 13:17:20 IP:219.86.xxx.xxx 未訂閱
OpenDialog1.InitialDir ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
Stallion
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-07 01:16:03 IP:211.22.xxx.xxx 未訂閱
插個花~ 用 > ----------------------------------------------
perry722
一般會員


發表:27
回覆:11
積分:7
註冊:2004-05-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-07 22:42:31 IP:202.175.xxx.xxx 未訂閱
謝謝各位的回覆,我剛才試過兩個方法了,對於OpenDialog的InitalDir這個方法的確不錯,連網路上的主機也可以指定,但有個問題就是用戶可以用後退來改變路徑,還是做不到我想要的要求呢,是否可以再設定其他屬性來做到這個功能呢? 還有就是用FileListbox,的確是我的想要的東西,但我剛才嘗試指定網路上的主機,但失敗了,是不是FileListbox不能指定網絡上的主機的路徑呢? 1437
------
1437
Stallion
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-07 22:56:13 IP:211.22.xxx.xxx 未訂閱
引言: 還有就是用FileListbox,的確是我的想要的東西,但我剛才嘗試指定網路上的主機,但失敗了,是不是FileListbox不能指定網絡上的主機的路徑呢?
是的,FileListBox要直接指定Drive名稱,可以先以NetShareAdd的WinAPI將遠端路徑,映設成一個邏輯磁碟,然後指定給FileListBox的Drive即可使用,用完後將網路磁碟刪除。請以NetShareAdd搜尋,線上討論有不少。 ----------------------------------------------
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-08 07:39:49 IP:220.132.xxx.xxx 未訂閱
參考參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=39827 乾脆自己做一個dialogbox算了 努力會更接近成功
------
努力會更接近成功
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-08 09:24:27 IP:203.69.xxx.xxx 未訂閱
使用 TShellListView 元件,     Root := <你指定的路徑> ObjectType := [otNonFolder]; ViewStyle := vsReport; AutoContextMenus := False; ReadOnly := True;    然後取得 FileName;
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (ShellListView1.ItemIndex>=0) then
    ShowMessage(ShellListView1.Folders[ShellListView1.ItemIndex].DisplayName);
end;
perry722
一般會員


發表:27
回覆:11
積分:7
註冊:2004-05-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-08 10:40:45 IP:202.175.xxx.xxx 未訂閱
謝謝各位的回覆,我剛試過ShellListview,的確是不錯,可以做到我要的所有要求了,但我想回一下,ShellListview是不是在Delphi5時是沒有的?因為我剛才在5里找過沒有,再去7的找就找到了.因為我公司現在開發的軟件都是用5的,因為某些原因不能自己寫控件且不能安裝第三方控件,所以在Delphi5的環境下有沒有可以做到ShellListview功能的控件呢? 1437
------
1437
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-08-08 11:25:16 IP:203.69.xxx.xxx 未訂閱
如果你 有能力撰寫元件, 那就可以動態 建立 TShellListView 元件, 不需要安裝它.....而 TShellListView 元件的程式碼已經附在 Delphi7 Demos\ShellControls 裡面. 因為你公司不允許安裝 第三方控件, 所以建議將 Demos\ShellControls 提供的元件 做簡化, 會少花一些功夫又可以得到一項精美的功能...
wameng
版主


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-08-09 00:12:48 IP:219.86.xxx.xxx 未訂閱
我不知道,這樣還可不可以爬上去。
procedure TForm1.OpenDialog1Show(Sender: TObject);
var
  DlgHwnd,SubHWnd : THandle;
begin
  DlgHwnd := GetActiveWindow;
  SubHWnd := FindWindowEx(DlgHwnd,0,'ToolbarWindow32',nil);
  if SubHWnd<>0 then ShowWindow(SubHWnd,SW_HIDE);
  SubHWnd := FindWindowEx(DlgHwnd,0,'Combobox',nil);
  if SubHWnd<>0 then EnableWindow(SubHWnd,false);
end;
將上移資料夾及Combobox 給關了。 ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~ 發表人 - wameng 於 2005/08/09 00:18:59
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-08-09 07:12:41 IP:220.132.xxx.xxx 未訂閱
wameng大大     
procedure TForm1.OpenDialog1Show(Sender: TObject);
var
  DlgHwnd,SubHWnd : THandle;
begin
  DlgHwnd := GetActiveWindow;
  SubHWnd := FindWindowEx(DlgHwnd,0,'ToolbarWindow32',nil);
  if SubHWnd<>0 then ShowWindow(SubHWnd,SW_HIDE);
  SubHWnd := FindWindowEx(DlgHwnd,0,'Combobox',nil);
  if SubHWnd<>0 then EnableWindow(SubHWnd,false);
end;    將上移資料夾及Combobox 給關了。     
我測試還要加上 記得還要將OpenDialog1 OptionEx -> ofExNoPlacesBar -> True 才行, 但如果使用者按倒退鍵還是回上一層 努力會更接近成功
------
努力會更接近成功
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-08-09 07:33:27 IP:203.69.xxx.xxx 未訂閱
如果資料夾內有"子資料夾" 還要把 Double Click 攔截掉, 不然會進入 "子資料夾"
wameng
版主


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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-08-09 20:47:40 IP:219.86.xxx.xxx 未訂閱
引言: wameng大大
procedure TForm1.OpenDialog1Show(Sender: TObject);
var
  DlgHwnd,SubHWnd : THandle;
begin
  DlgHwnd := GetActiveWindow;
  SubHWnd := FindWindowEx(DlgHwnd,0,'ToolbarWindow32',nil);
  if SubHWnd<>0 then ShowWindow(SubHWnd,SW_HIDE);
  SubHWnd := FindWindowEx(DlgHwnd,0,'Combobox',nil);
  if SubHWnd<>0 then EnableWindow(SubHWnd,false);
end;    將上移資料夾及Combobox 給關了。     
我測試還要加上 記得還要將OpenDialog1 OptionEx -> ofExNoPlacesBar -> True 才行, 但如果使用者按倒退鍵還是回上一層 努力會更接近成功
嗯。... 我用 Delphi 5 沒有OptionEx 屬性。 不知道差在哪裡? 感謝 pceyes 兄告知。.. ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
perry722
一般會員


發表:27
回覆:11
積分:7
註冊:2004-05-05

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-08-11 16:46:27 IP:202.175.xxx.xxx 未訂閱
謝謝版主,我試過了,可以做到我想做的要求了. 1437
------
1437
系統時間:2024-11-05 5:34:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!