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

請問openPictureDialog 關於限制使用者所有開啟目錄的問題

尚未結案
terence_lee
初階會員


發表:62
回覆:82
積分:28
註冊:2004-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-09 08:34:34 IP:61.221.xxx.xxx 未訂閱
各位先進大家早,想請問在openPictureDialog 中如何能夠限制使用者開啟圖檔時,只能在我的設定目錄選取檔案而已 ,小弟已參考過此篇文章 http://delphi.ktop.com.tw/topic.php?topic_id=33508 以下節錄 Justmade 版主大大的內容 ----------------------------------------------------------------------- 較簡單的方法的直接在 OpenDialog 的元件的 Filer 設定,左邊是顯示的名字,左邊是 Mask 若想同時數個 Mask 可以用 ; 相隔,如 Supported Files|*.dat;*.xls 目錄方面,你可在 InitDir 設定開始目錄,但目錄不能 Mask,你最多可以在 Options 設定 ofNoChangeDir 不讓使用者改變目錄。 另外你也可設定 ofFileMustExist 使使用者不能輸入一個不存在的檔名按 確定 ---------------------------------------------------------------------- 小弟已經將 ofNoChangeDir 設成true ,後依舊不行,開啟時會跳到起始目錄,但是使用者依舊可以切換至其他目錄選擇圖片,..以下是我的程式碼... opnPicDlg->Options.Clear(); opnPicDlg->InitialDir= c:\pic; opnPicDlg->Options << ofAllowMultiSelect << ofFileMustExist << ofNoChangeDir; if (opnPicDlg->Execute()) { for (int I = 0; I < opnPicDlg->Files->Count; I ) { listBox1->Items->Add(opnPicDlg->Files->Strings[I].c_str()); } } 發表人 - taishyang 於 2004/08/09 12:48:08
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-11 14:16:29 IP:61.142.xxx.xxx 未訂閱
terence_lee: ENIX007 曾於http://delphi.ktop.com.tw/topic.php?topic_id=53609 回答過【BCB】【問題】請教一個OpenPictureDialog 的問題 你可以一樣比照拉一個FileListBox FileListBox1->Directory="d:\\"; // 路徑指定 FileListBox1->FileName; // 選定檔案 若是MutiSelect FileListBox1->SelCount; //選檔個數 FileListBox1->Selected[i]; // 是否選到 FileListBox1->FileName; // 選定檔案 請參考! Andy Chang
------
Andy Chang
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-11 17:57:03 IP:219.84.xxx.xxx 未訂閱
opnPicDlg->Options.Clear();
opnPicDlg->InitialDir="C:\\pic";
opnPicDlg->Options << ofAllowMultiSelect << ofFileMustExist << ofNoChangeDir; 
if (opnPicDlg->Execute())
{
  for (int I = 0; I < opnPicDlg->Files->Count; I   )
  {
    if(opnPicDlg->Files->Strings[I].Pos("C:\\pic\\")==1)
      listBox1->Items->Add(opnPicDlg->Files->Strings[I].c_str());
    else
      ShowMessage("選了別的資料夾檔案了");
  }
}  
這樣可以達到你的要求嗎? (路徑C:的C請大寫)
terence_lee
初階會員


發表:62
回覆:82
積分:28
註冊:2004-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-11 18:29:25 IP:61.221.xxx.xxx 未訂閱
謝謝andychang1690 及 bass15兩位先進的回答, 因為小弟因為表單畫面已經塞不下FileList Box 了,所以想要使用對話方塊的方式,而對話方塊,目前和bass15兄的寫法不盡相同,以下是我目前的程式碼: opnPicDlg->InitialDir="C:\\pic"; SetCurrentDir("C:\\pic"); //改變系統工作目錄,但是使用者第二次再 //開啟時,也沒有跑到c:\pic目錄說 opnPicDlg->Options << ofAllowMultiSelect << ofFileMustExist << ofNoChangeDir; if (opnPicDlg->Execute()) { for (int I = 0; I < opnPicDlg->Files->Count; I ) { if (ExtractFilePath(opnPicDlg->Files->Strings[I])== picPath) { szTmp= ExtractFileName(opnPicDlg->Files->Strings[I]); lstBox_ss_1->Items->Add(szTmp); }else{ ShowMessage("Open File Path is not defined directory!"); return; } } } 但是如此一來的程式會產生2個問題: 1.InitialDir的路徑已經被改變,第二次就沒用了說,我希望使用者再次開啟的目錄,也要是c:\pic裡(於是我加入SetCurrentDir("C:\\pic")的指令,不過依舊不理我.!_!) 2.我真正的想法是不要讓使用在使用開啟舊檔時,能選擇其他的目錄(例如:網芳,或其他的磁碟機)..如果他無法選擇,那麼路徑的問題也不會產生了(因為使用者無法變更目錄) 再次謝謝2位大大的回答,^__^
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-11 23:03:28 IP:61.59.xxx.xxx 未訂閱
opnPicDlg->Options.Clear(); opnPicDlg->Options << ofAllowMultiSelect << ofFileMustExist << ofNoChangeDir; 這樣呢? 發表人 - bass15 於 2004/08/11 23:04:31
terence_lee
初階會員


發表:62
回覆:82
積分:28
註冊:2004-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-13 09:49:33 IP:211.74.xxx.xxx 未訂閱
謝謝bass15兄撥空回答 小弟試了一下依舊不行,會有以上畫面....!!_!!
bass15
高階會員


發表:24
回覆:171
積分:119
註冊:2003-10-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-13 11:53:03 IP:219.84.xxx.xxx 未訂閱
opnPicDlg->InitialDir="C:\\pic"; SetCurrentDir("C:\\pic"); opnPicDlg->FileName=""; 這樣應該可以了吧?? 因為你FileName沒清掉 所以他一打開會找出你之前選擇的檔案位置
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-13 15:29:56 IP:61.142.xxx.xxx 未訂閱
terence_lee: 我認為你應該去Delphi區詢問?! 因為追到 Include\Vcl\extdlgs.hpp 及 Source\Vcl\dialogs.pas 我不會Delphi,So......... 有辦法你可以自己改dialogs.pas 原Vcl\Source\dialogs.pas 不要動,也不要改 將dialogs.pas copy回你BCB專案檔案下 你的專案檔案只要 project-> add BCB專案目錄下dialogs.pas 就可以置換,也不會影響其他專案引用! Andy Chang
------
Andy Chang
系統時間:2024-11-24 20:23:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!