ورود

View Full Version : OpenDialoی برای انتخاب فولدر



skmkh6056
پنج شنبه 20 تیر 1387, 09:59 صبح
چطور میتونمfolder را انتخاب کنم نه فایل را

Hsimple11
پنج شنبه 20 تیر 1387, 12:18 عصر
OpenDialog اساسا برای انتخاب فایلها انتخاب شده و برای انتخاب دایرکتوری میتوانید از SelectDirectory استفاده کنید. البته میتوانید خصوصیت FileName مربوط به Opendialog خود را برابر * قرار دهید و فیلتر آن را هم Folder\*. قرار دهید و در قسمت Options گزینه foNoValidate را True قرار دهید. هرچند که روش درستی نیست ولی با اینکار تمامی فایلهای دایرکتوری شما جز فیلتر قرار میگیرند و خود مسیر فولدر بر میگردد. این سایت را ببینید :

http://jvcl.sourceforge.net/

Mahyaa
پنج شنبه 20 تیر 1387, 12:19 عصر
Select Directory :


uses FileCtrl;
...
var
SlctD: string;
begin
if SelectDirectory(SlctD, [], 0) then
ShowMessage('Selected Directory is ' + SlctD);
end;


Browse For Folder :
(این کد رو دست کم توی 15 سایت مختلف دیدم. )




uses ShlObj;
var lg_StartFolder: String;

function BrowseForFolderCallBack(Wnd: HWND; uMsg: UINT;
lParam, lpData: LPARAM): Integer stdcall;
begin
if uMsg = BFFM_INITIALIZED then
SendMessage(Wnd,BFFM_SETSELECTION, 1,
Integer(@lg_StartFolder[1]));
result := 0;
end;


function BrowseForFolder(const browseTitle: String;
const initialFolder: String =''): String;
var
browse_info: TBrowseInfo;
folder: array[0..MAX_PATH] of char;
find_context: PItemIDList;
begin
FillChar(browse_info,SizeOf(browse_info),#0);
lg_StartFolder := initialFolder;
browse_info.pszDisplayName := @folder[0];
browse_info.lpszTitle := PChar(browseTitle);
browse_info.ulFlags := BIF_RETURNONLYFSDIRS;
browse_info.lpfn := BrowseForFolderCallBack;
find_context := SHBrowseForFolder(browse_info);
if Assigned(find_context) then
begin
if SHGetPathFromIDList(find_context,folder) then
result := folder
else
result := '';
end
else
result := '';
end;


procedure TForm1.Button1Click(Sender: TObject);
var
dir: string;
begin
dir := BrowseForFolder('Select folder');
end;

B-Vedadian
جمعه 21 تیر 1387, 12:34 عصر
کد اول درسته (برام جديد و قشنگ بود) ولي کد دوم ناقصه، به سورس FileCtrl براي همين تابع نگاه کنيد.

Mahyaa
جمعه 21 تیر 1387, 16:56 عصر
کد اول درسته (برام جديد و قشنگ بود) ولي کد دوم ناقصه، به سورس FileCtrl براي همين تابع نگاه کنيد.

مقایسه کردم ولی نفهمیدم کدوم قسمتش ناقصه. در تنظیم اولیه Dialog یا گرفتن مقدار؟