PDA

View Full Version : تغییر نحوه نمایش فایلهای فهرست شده در TOpenDialog



Kambiz
شنبه 12 مهر 1382, 15:03 عصر
کامپوننت TOpenDialog بطور پیش فرض فهرست فایلها رو بصورت لیست نمایش میده. آیا راهی وجود داره که بشه این پیش فرض رو تغییر داد و کاری کرد که در ابتدا فایلها بصورت آیکون (بزرگ) فهرست بشوند؟

Mashatan
شنبه 12 مهر 1382, 15:31 عصر
کامبیز جان این برای C++ Builder هست ، تستش نکردم ببین راه درستی هست !

http://www.mers.com/MERLIST/BORLAND/PUBLIC/CPPBUILDER/VCL/COMPONENTS/USING/31403.HTML

Kambiz
شنبه 12 مهر 1382, 18:07 عصر
ممنون علی جان.
نه کد قشنگ بود نه روشی که بکار برده بود. :( در واقع رو اون کلید کوچیکی که برای انتخاب نحوه نمایش لیست هست (کنار ComboBox مسیر) کلیک می‌کنه.

راستش برای حل این موضوع چند وقت پیش خیلی سر و کله زدم ولی اصلا" راه به جایی نبردم. خوشبختانه امروز WinSight باهام راه اومد و یک راه بهتر پیدا کردم.


type
TFileViewStyle = (fvsIcons, fvsList, fvsDetails, fvsThumbnails, fvsTiles);

function SetFileDialogViewStyle(Handle: THandle; ViewStyle: TFileViewStyle): Boolean;
const
CommandIDs: array[TFileViewStyle] of WORD = ($7029, $702B, $702C, $702D, $702E);
var
NotifyWnd: THandle;
begin
Result := False;
NotifyWnd := FindWindowEx(GetParent(Handle), 0, 'SHELLDLL_DefView', nil);
if NotifyWnd <> 0 then
begin
SendMessage(NotifyWnd, WM_COMMAND, CommandIDs[ViewStyle], 0);
Result := True;
end;
end;
تابع بالا رو به ازای هر بار باز شدن OpenDialog یا SaveDialog فقط باید یک بار در رویداد OnFolderChange دیالوگ صدا زد. به عنوان نمونه:


procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Tag := 0;
OpenDialog1.Execute;
end;

procedure TForm1.OpenDialog1FolderChange(Sender: TObject);
begin
if OpenDialog1.Tag = 0 then
begin
SetFileDialogViewStyle(OpenDialog1.Handle, fvsIcons);
OpenDialog1.Tag := 1;
end;
end;
بازم ممنون.
کامبیز