請問openPictureDialog 關於限制使用者所有開啟目錄的問題 |
尚未結案
|
terence_lee
初階會員 發表:62 回覆:82 積分:28 註冊:2004-07-15 發送簡訊給我 |
各位先進大家早,想請問在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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
謝謝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 發送簡訊給我 |
|
terence_lee
初階會員 發表:62 回覆:82 積分:28 註冊:2004-07-15 發送簡訊給我 |
|
bass15
高階會員 發表:24 回覆:171 積分:119 註冊:2003-10-27 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |